package com.jmodula.compiler;
// $ANTLR 3.2 Sep 23, 2009 12:02:23 C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g 2010-01-24 16:32:27

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class ModulaParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "AND", "ARRAY", "BEGIN", "BY", "CASE", "CONST", "DEFINITION", "DIV", "DO", "ELSE", "ELSIF", "END", "EXIT", "EXPORT", "FOR", "FROM", "IF", "IMPLEMENTATION", "IMPORT", "IN", "LOOP", "MOD", "MODULE", "NOT", "OF", "OR", "POINTER", "PROCEDURE", "QUALIFIED", "RECORD", "REPEAT", "RETURN", "SET", "THEN", "TO", "TYPE", "UNTIL", "VAR", "WHILE", "WITH", "LETTER", "DIGIT", "IDENT", "OCTAL_DIGIT", "HEX_DIGIT", "INTEGER", "SCALE_FACTOR", "REAL", "CHARACTER", "STRING", "'.'", "'='", "'#'", "'<>'", "'<'", "'<='", "'>'", "'>='", "'+'", "'-'", "'*'", "'/'", "'&'", "'('", "')'", "'~'", "'{'", "','", "'}'", "'..'", "'['", "']'", "';'", "':'", "'|'", "'^'", "':='"
    };
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int WHILE=42;
    public static final int T__63=63;
    public static final int LETTER=44;
    public static final int MOD=25;
    public static final int CONST=9;
    public static final int POINTER=30;
    public static final int CASE=8;
    public static final int FOR=18;
    public static final int DO=12;
    public static final int NOT=27;
    public static final int T__61=61;
    public static final int AND=4;
    public static final int T__60=60;
    public static final int EOF=-1;
    public static final int OCTAL_DIGIT=47;
    public static final int CHARACTER=52;
    public static final int TYPE=39;
    public static final int IF=20;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int IMPORT=22;
    public static final int T__58=58;
    public static final int THEN=37;
    public static final int IN=23;
    public static final int T__54=54;
    public static final int T__59=59;
    public static final int LOOP=24;
    public static final int BEGIN=6;
    public static final int RETURN=35;
    public static final int QUALIFIED=32;
    public static final int DEFINITION=10;
    public static final int IDENT=46;
    public static final int VAR=41;
    public static final int IMPLEMENTATION=21;
    public static final int EXPORT=17;
    public static final int DIGIT=45;
    public static final int SCALE_FACTOR=50;
    public static final int ARRAY=5;
    public static final int WITH=43;
    public static final int INTEGER=49;
    public static final int EXIT=16;
    public static final int BY=7;
    public static final int RECORD=33;
    public static final int T__80=80;
    public static final int TO=38;
    public static final int ELSE=13;
    public static final int HEX_DIGIT=48;
    public static final int SET=36;
    public static final int MODULE=26;
    public static final int OF=28;
    public static final int PROCEDURE=31;
    public static final int REAL=51;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int UNTIL=40;
    public static final int OR=29;
    public static final int REPEAT=34;
    public static final int ELSIF=14;
    public static final int DIV=11;
    public static final int FROM=19;
    public static final int T__76=76;
    public static final int END=15;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__73=73;
    public static final int T__79=79;
    public static final int STRING=53;
    public static final int T__78=78;
    public static final int T__77=77;

    // delegates
    // delegators


        public ModulaParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public ModulaParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return ModulaParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g"; }



    // $ANTLR start "ident"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:147:1: ident : IDENT ;
    public final void ident() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:147:7: ( IDENT )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:147:9: IDENT
            {
            match(input,IDENT,FOLLOW_IDENT_in_ident1183); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "ident"


    // $ANTLR start "number"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:151:1: number : ( INTEGER | REAL );
    public final void number() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:151:8: ( INTEGER | REAL )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:
            {
            if ( input.LA(1)==INTEGER||input.LA(1)==REAL ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "number"


    // $ANTLR start "integer"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:155:1: integer : INTEGER ;
    public final void integer() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:155:9: ( INTEGER )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:155:11: INTEGER
            {
            match(input,INTEGER,FOLLOW_INTEGER_in_integer1211); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "integer"


    // $ANTLR start "real"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:159:1: real : REAL ;
    public final void real() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:159:6: ( REAL )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:159:8: REAL
            {
            match(input,REAL,FOLLOW_REAL_in_real1223); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "real"


    // $ANTLR start "scaleFactor"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:163:1: scaleFactor : SCALE_FACTOR ;
    public final void scaleFactor() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:163:13: ( SCALE_FACTOR )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:163:15: SCALE_FACTOR
            {
            match(input,SCALE_FACTOR,FOLLOW_SCALE_FACTOR_in_scaleFactor1235); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "scaleFactor"


    // $ANTLR start "hexDigit"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:167:1: hexDigit : HEX_DIGIT ;
    public final void hexDigit() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:167:10: ( HEX_DIGIT )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:167:12: HEX_DIGIT
            {
            match(input,HEX_DIGIT,FOLLOW_HEX_DIGIT_in_hexDigit1247); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "hexDigit"


    // $ANTLR start "digit"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:171:1: digit : DIGIT ;
    public final void digit() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:171:7: ( DIGIT )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:171:9: DIGIT
            {
            match(input,DIGIT,FOLLOW_DIGIT_in_digit1259); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "digit"


    // $ANTLR start "octalDigit"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:175:1: octalDigit : OCTAL_DIGIT ;
    public final void octalDigit() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:175:12: ( OCTAL_DIGIT )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:175:14: OCTAL_DIGIT
            {
            match(input,OCTAL_DIGIT,FOLLOW_OCTAL_DIGIT_in_octalDigit1271); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "octalDigit"


    // $ANTLR start "string"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:179:1: string : STRING ;
    public final void string() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:179:8: ( STRING )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:179:10: STRING
            {
            match(input,STRING,FOLLOW_STRING_in_string1283); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "string"


    // $ANTLR start "qualident"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:183:1: qualident : ident ( '.' ident )* ;
    public final void qualident() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:183:11: ( ident ( '.' ident )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:184:2: ident ( '.' ident )*
            {
            pushFollow(FOLLOW_ident_in_qualident1296);
            ident();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:184:8: ( '.' ident )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==54) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:184:10: '.' ident
            	    {
            	    match(input,54,FOLLOW_54_in_qualident1300); 
            	    pushFollow(FOLLOW_ident_in_qualident1302);
            	    ident();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "qualident"


    // $ANTLR start "constantDeclaration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:189:1: constantDeclaration : ident '=' constExpression ;
    public final void constantDeclaration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:189:21: ( ident '=' constExpression )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:190:2: ident '=' constExpression
            {
            pushFollow(FOLLOW_ident_in_constantDeclaration1319);
            ident();

            state._fsp--;

            match(input,55,FOLLOW_55_in_constantDeclaration1321); 
            pushFollow(FOLLOW_constExpression_in_constantDeclaration1323);
            constExpression();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "constantDeclaration"


    // $ANTLR start "constExpression"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:195:1: constExpression : simpleConstExpr ( relation simpleConstExpr )? ;
    public final void constExpression() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:195:17: ( simpleConstExpr ( relation simpleConstExpr )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:196:2: simpleConstExpr ( relation simpleConstExpr )?
            {
            pushFollow(FOLLOW_simpleConstExpr_in_constExpression1336);
            simpleConstExpr();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:196:18: ( relation simpleConstExpr )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==IN||(LA2_0>=55 && LA2_0<=61)) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:196:20: relation simpleConstExpr
                    {
                    pushFollow(FOLLOW_relation_in_constExpression1340);
                    relation();

                    state._fsp--;

                    pushFollow(FOLLOW_simpleConstExpr_in_constExpression1342);
                    simpleConstExpr();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "constExpression"


    // $ANTLR start "relation"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:201:1: relation : ( '=' | '#' | '<>' | '<' | '<=' | '>' | '>=' | 'IN' );
    public final void relation() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:201:10: ( '=' | '#' | '<>' | '<' | '<=' | '>' | '>=' | 'IN' )
            int alt3=8;
            switch ( input.LA(1) ) {
            case 55:
                {
                alt3=1;
                }
                break;
            case 56:
                {
                alt3=2;
                }
                break;
            case 57:
                {
                alt3=3;
                }
                break;
            case 58:
                {
                alt3=4;
                }
                break;
            case 59:
                {
                alt3=5;
                }
                break;
            case 60:
                {
                alt3=6;
                }
                break;
            case 61:
                {
                alt3=7;
                }
                break;
            case IN:
                {
                alt3=8;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:2: '='
                    {
                    match(input,55,FOLLOW_55_in_relation1358); 

                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:8: '#'
                    {
                    match(input,56,FOLLOW_56_in_relation1362); 

                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:14: '<>'
                    {
                    match(input,57,FOLLOW_57_in_relation1366); 

                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:21: '<'
                    {
                    match(input,58,FOLLOW_58_in_relation1370); 

                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:27: '<='
                    {
                    match(input,59,FOLLOW_59_in_relation1374); 

                    }
                    break;
                case 6 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:34: '>'
                    {
                    match(input,60,FOLLOW_60_in_relation1378); 

                    }
                    break;
                case 7 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:40: '>='
                    {
                    match(input,61,FOLLOW_61_in_relation1382); 

                    }
                    break;
                case 8 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:202:47: 'IN'
                    {
                    match(input,IN,FOLLOW_IN_in_relation1386); 


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "relation"


    // $ANTLR start "simpleConstExpr"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:207:1: simpleConstExpr : ( '+' | '-' )? constTerm ( addOperator constTerm )* ;
    public final void simpleConstExpr() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:207:17: ( ( '+' | '-' )? constTerm ( addOperator constTerm )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:208:2: ( '+' | '-' )? constTerm ( addOperator constTerm )*
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:208:2: ( '+' | '-' )?
            int alt4=3;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==62) ) {
                alt4=1;
            }
            else if ( (LA4_0==63) ) {
                alt4=2;
            }
            switch (alt4) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:208:4: '+'
                    {
                    match(input,62,FOLLOW_62_in_simpleConstExpr1403); 

                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:208:10: '-'
                    {
                    match(input,63,FOLLOW_63_in_simpleConstExpr1407); 


                    }
                    break;

            }

            pushFollow(FOLLOW_constTerm_in_simpleConstExpr1413);
            constTerm();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:208:29: ( addOperator constTerm )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==OR||(LA5_0>=62 && LA5_0<=63)) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:208:31: addOperator constTerm
            	    {
            	    pushFollow(FOLLOW_addOperator_in_simpleConstExpr1417);
            	    addOperator();

            	    state._fsp--;

            	    pushFollow(FOLLOW_constTerm_in_simpleConstExpr1419);
            	    constTerm();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "simpleConstExpr"


    // $ANTLR start "addOperator"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:213:1: addOperator : ( '+' | '-' | OR );
    public final void addOperator() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:213:13: ( '+' | '-' | OR )
            int alt6=3;
            switch ( input.LA(1) ) {
            case 62:
                {
                alt6=1;
                }
                break;
            case 63:
                {
                alt6=2;
                }
                break;
            case OR:
                {
                alt6=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:214:2: '+'
                    {
                    match(input,62,FOLLOW_62_in_addOperator1435); 

                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:214:8: '-'
                    {
                    match(input,63,FOLLOW_63_in_addOperator1439); 

                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:214:14: OR
                    {
                    match(input,OR,FOLLOW_OR_in_addOperator1443); 


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "addOperator"


    // $ANTLR start "constTerm"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:220:1: constTerm : constFactor ( mulOperator constFactor )* ;
    public final void constTerm() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:220:11: ( constFactor ( mulOperator constFactor )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:221:2: constFactor ( mulOperator constFactor )*
            {
            pushFollow(FOLLOW_constFactor_in_constTerm1460);
            constFactor();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:221:14: ( mulOperator constFactor )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==AND||LA7_0==DIV||LA7_0==MOD||(LA7_0>=64 && LA7_0<=66)) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:221:16: mulOperator constFactor
            	    {
            	    pushFollow(FOLLOW_mulOperator_in_constTerm1464);
            	    mulOperator();

            	    state._fsp--;

            	    pushFollow(FOLLOW_constFactor_in_constTerm1466);
            	    constFactor();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "constTerm"


    // $ANTLR start "mulOperator"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:226:1: mulOperator : ( '*' | '/' | DIV | MOD | AND | '&' );
    public final void mulOperator() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:226:13: ( '*' | '/' | DIV | MOD | AND | '&' )
            int alt8=6;
            switch ( input.LA(1) ) {
            case 64:
                {
                alt8=1;
                }
                break;
            case 65:
                {
                alt8=2;
                }
                break;
            case DIV:
                {
                alt8=3;
                }
                break;
            case MOD:
                {
                alt8=4;
                }
                break;
            case AND:
                {
                alt8=5;
                }
                break;
            case 66:
                {
                alt8=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;
            }

            switch (alt8) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:227:2: '*'
                    {
                    match(input,64,FOLLOW_64_in_mulOperator1482); 

                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:227:8: '/'
                    {
                    match(input,65,FOLLOW_65_in_mulOperator1486); 

                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:227:14: DIV
                    {
                    match(input,DIV,FOLLOW_DIV_in_mulOperator1490); 

                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:227:20: MOD
                    {
                    match(input,MOD,FOLLOW_MOD_in_mulOperator1494); 

                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:227:26: AND
                    {
                    match(input,AND,FOLLOW_AND_in_mulOperator1498); 

                    }
                    break;
                case 6 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:227:32: '&'
                    {
                    match(input,66,FOLLOW_66_in_mulOperator1502); 


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "mulOperator"


    // $ANTLR start "constFactor"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:237:1: constFactor : ( number | string | setOrQualident | '(' constExpression ')' | ( NOT | '~' ) constFactor );
    public final void constFactor() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:237:13: ( number | string | setOrQualident | '(' constExpression ')' | ( NOT | '~' ) constFactor )
            int alt10=5;
            switch ( input.LA(1) ) {
            case INTEGER:
            case REAL:
                {
                alt10=1;
                }
                break;
            case STRING:
                {
                alt10=2;
                }
                break;
            case IDENT:
            case 70:
                {
                alt10=3;
                }
                break;
            case 67:
                {
                alt10=4;
                }
                break;
            case NOT:
            case 69:
                {
                alt10=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }

            switch (alt10) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:238:2: number
                    {
                    pushFollow(FOLLOW_number_in_constFactor1523);
                    number();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:238:11: string
                    {
                    pushFollow(FOLLOW_string_in_constFactor1527);
                    string();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:238:20: setOrQualident
                    {
                    pushFollow(FOLLOW_setOrQualident_in_constFactor1531);
                    setOrQualident();

                    state._fsp--;


                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:239:2: '(' constExpression ')'
                    {
                    match(input,67,FOLLOW_67_in_constFactor1536); 
                    pushFollow(FOLLOW_constExpression_in_constFactor1538);
                    constExpression();

                    state._fsp--;

                    match(input,68,FOLLOW_68_in_constFactor1540); 

                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:239:28: ( NOT | '~' ) constFactor
                    {
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:239:28: ( NOT | '~' )
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0==NOT) ) {
                        alt9=1;
                    }
                    else if ( (LA9_0==69) ) {
                        alt9=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 9, 0, input);

                        throw nvae;
                    }
                    switch (alt9) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:239:30: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_constFactor1546); 

                            }
                            break;
                        case 2 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:239:36: '~'
                            {
                            match(input,69,FOLLOW_69_in_constFactor1550); 


                            }
                            break;

                    }

                    pushFollow(FOLLOW_constFactor_in_constFactor1555);
                    constFactor();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "constFactor"


    // $ANTLR start "setOrQualident"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:243:1: setOrQualident : ( set | qualident ( set )? );
    public final void setOrQualident() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:243:16: ( set | qualident ( set )? )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==70) ) {
                alt12=1;
            }
            else if ( (LA12_0==IDENT) ) {
                alt12=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:244:2: set
                    {
                    pushFollow(FOLLOW_set_in_setOrQualident1567);
                    set();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:244:8: qualident ( set )?
                    {
                    pushFollow(FOLLOW_qualident_in_setOrQualident1571);
                    qualident();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:244:18: ( set )?
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0==70) ) {
                        alt11=1;
                    }
                    switch (alt11) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:244:18: set
                            {
                            pushFollow(FOLLOW_set_in_setOrQualident1573);
                            set();

                            state._fsp--;


                            }
                            break;

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "setOrQualident"


    // $ANTLR start "set"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:250:1: set : '{' ( element ( ',' element )* )? '}' ;
    public final void set() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:250:5: ( '{' ( element ( ',' element )* )? '}' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:252:2: '{' ( element ( ',' element )* )? '}'
            {
            match(input,70,FOLLOW_70_in_set1591); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:252:6: ( element ( ',' element )* )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==NOT||LA14_0==IDENT||LA14_0==INTEGER||LA14_0==REAL||LA14_0==STRING||(LA14_0>=62 && LA14_0<=63)||LA14_0==67||(LA14_0>=69 && LA14_0<=70)) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:252:8: element ( ',' element )*
                    {
                    pushFollow(FOLLOW_element_in_set1595);
                    element();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:252:16: ( ',' element )*
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( (LA13_0==71) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:252:18: ',' element
                    	    {
                    	    match(input,71,FOLLOW_71_in_set1599); 
                    	    pushFollow(FOLLOW_element_in_set1601);
                    	    element();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop13;
                        }
                    } while (true);


                    }
                    break;

            }

            match(input,72,FOLLOW_72_in_set1609); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "set"


    // $ANTLR start "element"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:257:1: element : constExpression ( '..' constExpression )? ;
    public final void element() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:257:9: ( constExpression ( '..' constExpression )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:258:2: constExpression ( '..' constExpression )?
            {
            pushFollow(FOLLOW_constExpression_in_element1622);
            constExpression();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:258:18: ( '..' constExpression )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==73) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:258:20: '..' constExpression
                    {
                    match(input,73,FOLLOW_73_in_element1626); 
                    pushFollow(FOLLOW_constExpression_in_element1628);
                    constExpression();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "element"


    // $ANTLR start "typeDeclaration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:263:1: typeDeclaration : ident '=' type ;
    public final void typeDeclaration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:263:17: ( ident '=' type )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:264:2: ident '=' type
            {
            pushFollow(FOLLOW_ident_in_typeDeclaration1644);
            ident();

            state._fsp--;

            match(input,55,FOLLOW_55_in_typeDeclaration1646); 
            pushFollow(FOLLOW_type_in_typeDeclaration1648);
            type();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "typeDeclaration"


    // $ANTLR start "type"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:269:1: type : ( simpleType | arrayType | recordType | setType | pointerType | procedureType );
    public final void type() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:269:6: ( simpleType | arrayType | recordType | setType | pointerType | procedureType )
            int alt16=6;
            switch ( input.LA(1) ) {
            case IDENT:
            case 67:
            case 74:
                {
                alt16=1;
                }
                break;
            case ARRAY:
                {
                alt16=2;
                }
                break;
            case RECORD:
                {
                alt16=3;
                }
                break;
            case SET:
                {
                alt16=4;
                }
                break;
            case POINTER:
                {
                alt16=5;
                }
                break;
            case PROCEDURE:
                {
                alt16=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }

            switch (alt16) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:270:2: simpleType
                    {
                    pushFollow(FOLLOW_simpleType_in_type1661);
                    simpleType();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:270:15: arrayType
                    {
                    pushFollow(FOLLOW_arrayType_in_type1665);
                    arrayType();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:270:27: recordType
                    {
                    pushFollow(FOLLOW_recordType_in_type1669);
                    recordType();

                    state._fsp--;


                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:270:40: setType
                    {
                    pushFollow(FOLLOW_setType_in_type1673);
                    setType();

                    state._fsp--;


                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:270:50: pointerType
                    {
                    pushFollow(FOLLOW_pointerType_in_type1677);
                    pointerType();

                    state._fsp--;


                    }
                    break;
                case 6 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:270:64: procedureType
                    {
                    pushFollow(FOLLOW_procedureType_in_type1681);
                    procedureType();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "type"


    // $ANTLR start "simpleType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:275:1: simpleType : ( qualident | enumeration | subrangeType );
    public final void simpleType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:275:12: ( qualident | enumeration | subrangeType )
            int alt17=3;
            switch ( input.LA(1) ) {
            case IDENT:
                {
                alt17=1;
                }
                break;
            case 67:
                {
                alt17=2;
                }
                break;
            case 74:
                {
                alt17=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:276:2: qualident
                    {
                    pushFollow(FOLLOW_qualident_in_simpleType1694);
                    qualident();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:276:14: enumeration
                    {
                    pushFollow(FOLLOW_enumeration_in_simpleType1698);
                    enumeration();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:276:28: subrangeType
                    {
                    pushFollow(FOLLOW_subrangeType_in_simpleType1702);
                    subrangeType();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "simpleType"


    // $ANTLR start "enumeration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:281:1: enumeration : '(' identList ')' ;
    public final void enumeration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:281:13: ( '(' identList ')' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:282:2: '(' identList ')'
            {
            match(input,67,FOLLOW_67_in_enumeration1715); 
            pushFollow(FOLLOW_identList_in_enumeration1717);
            identList();

            state._fsp--;

            match(input,68,FOLLOW_68_in_enumeration1719); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "enumeration"


    // $ANTLR start "identList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:287:1: identList : ident ( ',' ident )* ;
    public final void identList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:287:11: ( ident ( ',' ident )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:288:2: ident ( ',' ident )*
            {
            pushFollow(FOLLOW_ident_in_identList1732);
            ident();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:288:8: ( ',' ident )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==71) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:288:10: ',' ident
            	    {
            	    match(input,71,FOLLOW_71_in_identList1736); 
            	    pushFollow(FOLLOW_ident_in_identList1738);
            	    ident();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "identList"


    // $ANTLR start "subrangeType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:293:1: subrangeType : '[' constExpression '..' constExpression ']' ;
    public final void subrangeType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:293:14: ( '[' constExpression '..' constExpression ']' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:294:2: '[' constExpression '..' constExpression ']'
            {
            match(input,74,FOLLOW_74_in_subrangeType1754); 
            pushFollow(FOLLOW_constExpression_in_subrangeType1756);
            constExpression();

            state._fsp--;

            match(input,73,FOLLOW_73_in_subrangeType1758); 
            pushFollow(FOLLOW_constExpression_in_subrangeType1760);
            constExpression();

            state._fsp--;

            match(input,75,FOLLOW_75_in_subrangeType1762); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "subrangeType"


    // $ANTLR start "arrayType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:299:1: arrayType : ARRAY simpleType ( ',' simpleType )* OF type ;
    public final void arrayType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:299:11: ( ARRAY simpleType ( ',' simpleType )* OF type )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:300:2: ARRAY simpleType ( ',' simpleType )* OF type
            {
            match(input,ARRAY,FOLLOW_ARRAY_in_arrayType1775); 
            pushFollow(FOLLOW_simpleType_in_arrayType1777);
            simpleType();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:300:19: ( ',' simpleType )*
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==71) ) {
                    alt19=1;
                }


                switch (alt19) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:300:21: ',' simpleType
            	    {
            	    match(input,71,FOLLOW_71_in_arrayType1781); 
            	    pushFollow(FOLLOW_simpleType_in_arrayType1783);
            	    simpleType();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);

            match(input,OF,FOLLOW_OF_in_arrayType1788); 
            pushFollow(FOLLOW_type_in_arrayType1790);
            type();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "arrayType"


    // $ANTLR start "recordType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:305:1: recordType : RECORD fieldListSequence END ;
    public final void recordType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:305:12: ( RECORD fieldListSequence END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:306:2: RECORD fieldListSequence END
            {
            match(input,RECORD,FOLLOW_RECORD_in_recordType1803); 
            pushFollow(FOLLOW_fieldListSequence_in_recordType1805);
            fieldListSequence();

            state._fsp--;

            match(input,END,FOLLOW_END_in_recordType1807); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "recordType"


    // $ANTLR start "fieldListSequence"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:311:1: fieldListSequence : fieldList ( ';' fieldList )* ;
    public final void fieldListSequence() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:311:19: ( fieldList ( ';' fieldList )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:312:2: fieldList ( ';' fieldList )*
            {
            pushFollow(FOLLOW_fieldList_in_fieldListSequence1820);
            fieldList();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:312:12: ( ';' fieldList )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==76) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:312:14: ';' fieldList
            	    {
            	    match(input,76,FOLLOW_76_in_fieldListSequence1824); 
            	    pushFollow(FOLLOW_fieldList_in_fieldListSequence1826);
            	    fieldList();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "fieldListSequence"


    // $ANTLR start "fieldList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:318:1: fieldList : ( identList ':' type | CASE ident ( ( ':' | '.' ) qualident )? OF variant ( '|' variant )* ( ELSE fieldListSequence )? END )? ;
    public final void fieldList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:318:11: ( ( identList ':' type | CASE ident ( ( ':' | '.' ) qualident )? OF variant ( '|' variant )* ( ELSE fieldListSequence )? END )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:319:2: ( identList ':' type | CASE ident ( ( ':' | '.' ) qualident )? OF variant ( '|' variant )* ( ELSE fieldListSequence )? END )?
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:319:2: ( identList ':' type | CASE ident ( ( ':' | '.' ) qualident )? OF variant ( '|' variant )* ( ELSE fieldListSequence )? END )?
            int alt25=3;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==IDENT) ) {
                alt25=1;
            }
            else if ( (LA25_0==CASE) ) {
                alt25=2;
            }
            switch (alt25) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:319:4: identList ':' type
                    {
                    pushFollow(FOLLOW_identList_in_fieldList1845);
                    identList();

                    state._fsp--;

                    match(input,77,FOLLOW_77_in_fieldList1847); 
                    pushFollow(FOLLOW_type_in_fieldList1849);
                    type();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:4: CASE ident ( ( ':' | '.' ) qualident )? OF variant ( '|' variant )* ( ELSE fieldListSequence )? END
                    {
                    match(input,CASE,FOLLOW_CASE_in_fieldList1856); 
                    pushFollow(FOLLOW_ident_in_fieldList1858);
                    ident();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:15: ( ( ':' | '.' ) qualident )?
                    int alt22=2;
                    int LA22_0 = input.LA(1);

                    if ( (LA22_0==54||LA22_0==77) ) {
                        alt22=1;
                    }
                    switch (alt22) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:17: ( ':' | '.' ) qualident
                            {
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:17: ( ':' | '.' )
                            int alt21=2;
                            int LA21_0 = input.LA(1);

                            if ( (LA21_0==77) ) {
                                alt21=1;
                            }
                            else if ( (LA21_0==54) ) {
                                alt21=2;
                            }
                            else {
                                NoViableAltException nvae =
                                    new NoViableAltException("", 21, 0, input);

                                throw nvae;
                            }
                            switch (alt21) {
                                case 1 :
                                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:19: ':'
                                    {
                                    match(input,77,FOLLOW_77_in_fieldList1864); 

                                    }
                                    break;
                                case 2 :
                                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:25: '.'
                                    {
                                    match(input,54,FOLLOW_54_in_fieldList1868); 


                                    }
                                    break;

                            }

                            pushFollow(FOLLOW_qualident_in_fieldList1873);
                            qualident();

                            state._fsp--;


                            }
                            break;

                    }

                    match(input,OF,FOLLOW_OF_in_fieldList1878); 
                    pushFollow(FOLLOW_variant_in_fieldList1880);
                    variant();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:57: ( '|' variant )*
                    loop23:
                    do {
                        int alt23=2;
                        int LA23_0 = input.LA(1);

                        if ( (LA23_0==78) ) {
                            alt23=1;
                        }


                        switch (alt23) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:320:59: '|' variant
                    	    {
                    	    match(input,78,FOLLOW_78_in_fieldList1884); 
                    	    pushFollow(FOLLOW_variant_in_fieldList1886);
                    	    variant();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop23;
                        }
                    } while (true);

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:321:4: ( ELSE fieldListSequence )?
                    int alt24=2;
                    int LA24_0 = input.LA(1);

                    if ( (LA24_0==ELSE) ) {
                        alt24=1;
                    }
                    switch (alt24) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:321:6: ELSE fieldListSequence
                            {
                            match(input,ELSE,FOLLOW_ELSE_in_fieldList1896); 
                            pushFollow(FOLLOW_fieldListSequence_in_fieldList1898);
                            fieldListSequence();

                            state._fsp--;


                            }
                            break;

                    }

                    match(input,END,FOLLOW_END_in_fieldList1906); 

                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "fieldList"


    // $ANTLR start "variant"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:327:1: variant : caseLabelList ':' fieldListSequence ;
    public final void variant() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:327:9: ( caseLabelList ':' fieldListSequence )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:328:2: caseLabelList ':' fieldListSequence
            {
            pushFollow(FOLLOW_caseLabelList_in_variant1922);
            caseLabelList();

            state._fsp--;

            match(input,77,FOLLOW_77_in_variant1924); 
            pushFollow(FOLLOW_fieldListSequence_in_variant1926);
            fieldListSequence();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "variant"


    // $ANTLR start "caseLabelList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:333:1: caseLabelList : caseLabels ( ',' caseLabels )* ;
    public final void caseLabelList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:333:15: ( caseLabels ( ',' caseLabels )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:334:2: caseLabels ( ',' caseLabels )*
            {
            pushFollow(FOLLOW_caseLabels_in_caseLabelList1939);
            caseLabels();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:334:13: ( ',' caseLabels )*
            loop26:
            do {
                int alt26=2;
                int LA26_0 = input.LA(1);

                if ( (LA26_0==71) ) {
                    alt26=1;
                }


                switch (alt26) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:334:15: ',' caseLabels
            	    {
            	    match(input,71,FOLLOW_71_in_caseLabelList1943); 
            	    pushFollow(FOLLOW_caseLabels_in_caseLabelList1945);
            	    caseLabels();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop26;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "caseLabelList"


    // $ANTLR start "caseLabels"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:339:1: caseLabels : constExpression ( '..' constExpression )? ;
    public final void caseLabels() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:339:12: ( constExpression ( '..' constExpression )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:340:2: constExpression ( '..' constExpression )?
            {
            pushFollow(FOLLOW_constExpression_in_caseLabels1961);
            constExpression();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:340:18: ( '..' constExpression )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==73) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:340:20: '..' constExpression
                    {
                    match(input,73,FOLLOW_73_in_caseLabels1965); 
                    pushFollow(FOLLOW_constExpression_in_caseLabels1967);
                    constExpression();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "caseLabels"


    // $ANTLR start "setType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:345:1: setType : SET OF simpleType ;
    public final void setType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:345:9: ( SET OF simpleType )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:346:2: SET OF simpleType
            {
            match(input,SET,FOLLOW_SET_in_setType1983); 
            match(input,OF,FOLLOW_OF_in_setType1985); 
            pushFollow(FOLLOW_simpleType_in_setType1987);
            simpleType();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "setType"


    // $ANTLR start "pointerType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:351:1: pointerType : POINTER TO type ;
    public final void pointerType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:351:13: ( POINTER TO type )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:352:2: POINTER TO type
            {
            match(input,POINTER,FOLLOW_POINTER_in_pointerType2000); 
            match(input,TO,FOLLOW_TO_in_pointerType2002); 
            pushFollow(FOLLOW_type_in_pointerType2004);
            type();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "pointerType"


    // $ANTLR start "procedureType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:357:1: procedureType : PROCEDURE ( formalTypeList )? ;
    public final void procedureType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:357:15: ( PROCEDURE ( formalTypeList )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:358:2: PROCEDURE ( formalTypeList )?
            {
            match(input,PROCEDURE,FOLLOW_PROCEDURE_in_procedureType2017); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:358:12: ( formalTypeList )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==67) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:358:12: formalTypeList
                    {
                    pushFollow(FOLLOW_formalTypeList_in_procedureType2019);
                    formalTypeList();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "procedureType"


    // $ANTLR start "formalTypeList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:363:1: formalTypeList : '(' ( ( VAR )? formalType ( ',' ( VAR )? formalType )* )? ')' ( ':' qualident )? ;
    public final void formalTypeList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:363:16: ( '(' ( ( VAR )? formalType ( ',' ( VAR )? formalType )* )? ')' ( ':' qualident )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:2: '(' ( ( VAR )? formalType ( ',' ( VAR )? formalType )* )? ')' ( ':' qualident )?
            {
            match(input,67,FOLLOW_67_in_formalTypeList2033); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:6: ( ( VAR )? formalType ( ',' ( VAR )? formalType )* )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==ARRAY||LA32_0==VAR||LA32_0==IDENT) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:8: ( VAR )? formalType ( ',' ( VAR )? formalType )*
                    {
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:8: ( VAR )?
                    int alt29=2;
                    int LA29_0 = input.LA(1);

                    if ( (LA29_0==VAR) ) {
                        alt29=1;
                    }
                    switch (alt29) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:8: VAR
                            {
                            match(input,VAR,FOLLOW_VAR_in_formalTypeList2037); 

                            }
                            break;

                    }

                    pushFollow(FOLLOW_formalType_in_formalTypeList2040);
                    formalType();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:24: ( ',' ( VAR )? formalType )*
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

                        if ( (LA31_0==71) ) {
                            alt31=1;
                        }


                        switch (alt31) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:26: ',' ( VAR )? formalType
                    	    {
                    	    match(input,71,FOLLOW_71_in_formalTypeList2044); 
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:30: ( VAR )?
                    	    int alt30=2;
                    	    int LA30_0 = input.LA(1);

                    	    if ( (LA30_0==VAR) ) {
                    	        alt30=1;
                    	    }
                    	    switch (alt30) {
                    	        case 1 :
                    	            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:364:30: VAR
                    	            {
                    	            match(input,VAR,FOLLOW_VAR_in_formalTypeList2046); 

                    	            }
                    	            break;

                    	    }

                    	    pushFollow(FOLLOW_formalType_in_formalTypeList2049);
                    	    formalType();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop31;
                        }
                    } while (true);


                    }
                    break;

            }

            match(input,68,FOLLOW_68_in_formalTypeList2057); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:365:2: ( ':' qualident )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==77) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:365:4: ':' qualident
                    {
                    match(input,77,FOLLOW_77_in_formalTypeList2062); 
                    pushFollow(FOLLOW_qualident_in_formalTypeList2064);
                    qualident();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "formalTypeList"


    // $ANTLR start "variableDeclaration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:370:1: variableDeclaration : identList ':' type ;
    public final void variableDeclaration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:370:21: ( identList ':' type )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:371:2: identList ':' type
            {
            pushFollow(FOLLOW_identList_in_variableDeclaration2080);
            identList();

            state._fsp--;

            match(input,77,FOLLOW_77_in_variableDeclaration2082); 
            pushFollow(FOLLOW_type_in_variableDeclaration2084);
            type();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "variableDeclaration"


    // $ANTLR start "designator"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:377:1: designator : qualident ( designatorTail )? ;
    public final void designator() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:377:12: ( qualident ( designatorTail )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:378:2: qualident ( designatorTail )?
            {
            pushFollow(FOLLOW_qualident_in_designator2098);
            qualident();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:378:12: ( designatorTail )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==74||LA34_0==79) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:378:14: designatorTail
                    {
                    pushFollow(FOLLOW_designatorTail_in_designator2102);
                    designatorTail();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "designator"


    // $ANTLR start "designatorTail"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:382:1: designatorTail : ( ( '[' expList ']' | '^' ) ( '.' ident )* )+ ;
    public final void designatorTail() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:382:16: ( ( ( '[' expList ']' | '^' ) ( '.' ident )* )+ )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:2: ( ( '[' expList ']' | '^' ) ( '.' ident )* )+
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:2: ( ( '[' expList ']' | '^' ) ( '.' ident )* )+
            int cnt37=0;
            loop37:
            do {
                int alt37=2;
                int LA37_0 = input.LA(1);

                if ( (LA37_0==74||LA37_0==79) ) {
                    alt37=1;
                }


                switch (alt37) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:4: ( '[' expList ']' | '^' ) ( '.' ident )*
            	    {
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:4: ( '[' expList ']' | '^' )
            	    int alt35=2;
            	    int LA35_0 = input.LA(1);

            	    if ( (LA35_0==74) ) {
            	        alt35=1;
            	    }
            	    else if ( (LA35_0==79) ) {
            	        alt35=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 35, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt35) {
            	        case 1 :
            	            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:6: '[' expList ']'
            	            {
            	            match(input,74,FOLLOW_74_in_designatorTail2121); 
            	            pushFollow(FOLLOW_expList_in_designatorTail2123);
            	            expList();

            	            state._fsp--;

            	            match(input,75,FOLLOW_75_in_designatorTail2125); 

            	            }
            	            break;
            	        case 2 :
            	            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:24: '^'
            	            {
            	            match(input,79,FOLLOW_79_in_designatorTail2129); 

            	            }
            	            break;

            	    }

            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:30: ( '.' ident )*
            	    loop36:
            	    do {
            	        int alt36=2;
            	        int LA36_0 = input.LA(1);

            	        if ( (LA36_0==54) ) {
            	            alt36=1;
            	        }


            	        switch (alt36) {
            	    	case 1 :
            	    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:383:32: '.' ident
            	    	    {
            	    	    match(input,54,FOLLOW_54_in_designatorTail2135); 
            	    	    pushFollow(FOLLOW_ident_in_designatorTail2137);
            	    	    ident();

            	    	    state._fsp--;


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop36;
            	        }
            	    } while (true);


            	    }
            	    break;

            	default :
            	    if ( cnt37 >= 1 ) break loop37;
                        EarlyExitException eee =
                            new EarlyExitException(37, input);
                        throw eee;
                }
                cnt37++;
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "designatorTail"


    // $ANTLR start "expList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:388:1: expList : expression ( ',' expression )* ;
    public final void expList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:388:9: ( expression ( ',' expression )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:389:2: expression ( ',' expression )*
            {
            pushFollow(FOLLOW_expression_in_expList2156);
            expression();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:389:13: ( ',' expression )*
            loop38:
            do {
                int alt38=2;
                int LA38_0 = input.LA(1);

                if ( (LA38_0==71) ) {
                    alt38=1;
                }


                switch (alt38) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:389:15: ',' expression
            	    {
            	    match(input,71,FOLLOW_71_in_expList2160); 
            	    pushFollow(FOLLOW_expression_in_expList2162);
            	    expression();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop38;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "expList"


    // $ANTLR start "expression"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:394:1: expression : simpleExpression ( relation simpleExpression )? ;
    public final void expression() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:394:12: ( simpleExpression ( relation simpleExpression )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:395:2: simpleExpression ( relation simpleExpression )?
            {
            pushFollow(FOLLOW_simpleExpression_in_expression2178);
            simpleExpression();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:395:19: ( relation simpleExpression )?
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( (LA39_0==IN||(LA39_0>=55 && LA39_0<=61)) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:395:21: relation simpleExpression
                    {
                    pushFollow(FOLLOW_relation_in_expression2182);
                    relation();

                    state._fsp--;

                    pushFollow(FOLLOW_simpleExpression_in_expression2184);
                    simpleExpression();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "expression"


    // $ANTLR start "simpleExpression"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:400:1: simpleExpression : ( '+' | '-' )? term ( addOperator term )* ;
    public final void simpleExpression() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:400:18: ( ( '+' | '-' )? term ( addOperator term )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:401:2: ( '+' | '-' )? term ( addOperator term )*
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:401:2: ( '+' | '-' )?
            int alt40=3;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==62) ) {
                alt40=1;
            }
            else if ( (LA40_0==63) ) {
                alt40=2;
            }
            switch (alt40) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:401:4: '+'
                    {
                    match(input,62,FOLLOW_62_in_simpleExpression2202); 

                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:401:10: '-'
                    {
                    match(input,63,FOLLOW_63_in_simpleExpression2206); 


                    }
                    break;

            }

            pushFollow(FOLLOW_term_in_simpleExpression2212);
            term();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:401:24: ( addOperator term )*
            loop41:
            do {
                int alt41=2;
                int LA41_0 = input.LA(1);

                if ( (LA41_0==OR||(LA41_0>=62 && LA41_0<=63)) ) {
                    alt41=1;
                }


                switch (alt41) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:401:26: addOperator term
            	    {
            	    pushFollow(FOLLOW_addOperator_in_simpleExpression2216);
            	    addOperator();

            	    state._fsp--;

            	    pushFollow(FOLLOW_term_in_simpleExpression2218);
            	    term();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop41;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "simpleExpression"


    // $ANTLR start "term"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:406:1: term : factor ( mulOperator factor )* ;
    public final void term() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:406:6: ( factor ( mulOperator factor )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:407:2: factor ( mulOperator factor )*
            {
            pushFollow(FOLLOW_factor_in_term2234);
            factor();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:407:9: ( mulOperator factor )*
            loop42:
            do {
                int alt42=2;
                int LA42_0 = input.LA(1);

                if ( (LA42_0==AND||LA42_0==DIV||LA42_0==MOD||(LA42_0>=64 && LA42_0<=66)) ) {
                    alt42=1;
                }


                switch (alt42) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:407:11: mulOperator factor
            	    {
            	    pushFollow(FOLLOW_mulOperator_in_term2238);
            	    mulOperator();

            	    state._fsp--;

            	    pushFollow(FOLLOW_factor_in_term2240);
            	    factor();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop42;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "term"


    // $ANTLR start "factor"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:416:1: factor : ( number | string | setOrDesignatorOrProcCall | '(' expression ')' | ( NOT | '~' ) factor );
    public final void factor() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:416:8: ( number | string | setOrDesignatorOrProcCall | '(' expression ')' | ( NOT | '~' ) factor )
            int alt44=5;
            switch ( input.LA(1) ) {
            case INTEGER:
            case REAL:
                {
                alt44=1;
                }
                break;
            case STRING:
                {
                alt44=2;
                }
                break;
            case IDENT:
            case 70:
                {
                alt44=3;
                }
                break;
            case 67:
                {
                alt44=4;
                }
                break;
            case NOT:
            case 69:
                {
                alt44=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;
            }

            switch (alt44) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:417:2: number
                    {
                    pushFollow(FOLLOW_number_in_factor2260);
                    number();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:418:2: string
                    {
                    pushFollow(FOLLOW_string_in_factor2265);
                    string();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:419:2: setOrDesignatorOrProcCall
                    {
                    pushFollow(FOLLOW_setOrDesignatorOrProcCall_in_factor2270);
                    setOrDesignatorOrProcCall();

                    state._fsp--;


                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:420:2: '(' expression ')'
                    {
                    match(input,67,FOLLOW_67_in_factor2275); 
                    pushFollow(FOLLOW_expression_in_factor2277);
                    expression();

                    state._fsp--;

                    match(input,68,FOLLOW_68_in_factor2279); 

                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:420:23: ( NOT | '~' ) factor
                    {
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:420:23: ( NOT | '~' )
                    int alt43=2;
                    int LA43_0 = input.LA(1);

                    if ( (LA43_0==NOT) ) {
                        alt43=1;
                    }
                    else if ( (LA43_0==69) ) {
                        alt43=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 43, 0, input);

                        throw nvae;
                    }
                    switch (alt43) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:420:25: NOT
                            {
                            match(input,NOT,FOLLOW_NOT_in_factor2285); 

                            }
                            break;
                        case 2 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:420:31: '~'
                            {
                            match(input,69,FOLLOW_69_in_factor2289); 


                            }
                            break;

                    }

                    pushFollow(FOLLOW_factor_in_factor2294);
                    factor();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "factor"


    // $ANTLR start "setOrDesignatorOrProcCall"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:424:1: setOrDesignatorOrProcCall : ( set | qualident ( set | ( designatorTail )? ( actualParameters )? ) );
    public final void setOrDesignatorOrProcCall() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:424:27: ( set | qualident ( set | ( designatorTail )? ( actualParameters )? ) )
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==70) ) {
                alt48=1;
            }
            else if ( (LA48_0==IDENT) ) {
                alt48=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }
            switch (alt48) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:425:2: set
                    {
                    pushFollow(FOLLOW_set_in_setOrDesignatorOrProcCall2306);
                    set();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:426:2: qualident ( set | ( designatorTail )? ( actualParameters )? )
                    {
                    pushFollow(FOLLOW_qualident_in_setOrDesignatorOrProcCall2311);
                    qualident();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:2: ( set | ( designatorTail )? ( actualParameters )? )
                    int alt47=2;
                    int LA47_0 = input.LA(1);

                    if ( (LA47_0==70) ) {
                        alt47=1;
                    }
                    else if ( (LA47_0==AND||LA47_0==BY||(LA47_0>=DIV && LA47_0<=END)||LA47_0==IN||LA47_0==MOD||(LA47_0>=OF && LA47_0<=OR)||(LA47_0>=THEN && LA47_0<=TO)||LA47_0==UNTIL||(LA47_0>=55 && LA47_0<=68)||LA47_0==71||(LA47_0>=74 && LA47_0<=76)||(LA47_0>=78 && LA47_0<=79)) ) {
                        alt47=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 47, 0, input);

                        throw nvae;
                    }
                    switch (alt47) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:4: set
                            {
                            pushFollow(FOLLOW_set_in_setOrDesignatorOrProcCall2318);
                            set();

                            state._fsp--;


                            }
                            break;
                        case 2 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:10: ( designatorTail )? ( actualParameters )?
                            {
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:10: ( designatorTail )?
                            int alt45=2;
                            int LA45_0 = input.LA(1);

                            if ( (LA45_0==74||LA45_0==79) ) {
                                alt45=1;
                            }
                            switch (alt45) {
                                case 1 :
                                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:10: designatorTail
                                    {
                                    pushFollow(FOLLOW_designatorTail_in_setOrDesignatorOrProcCall2322);
                                    designatorTail();

                                    state._fsp--;


                                    }
                                    break;

                            }

                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:26: ( actualParameters )?
                            int alt46=2;
                            int LA46_0 = input.LA(1);

                            if ( (LA46_0==67) ) {
                                alt46=1;
                            }
                            switch (alt46) {
                                case 1 :
                                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:427:26: actualParameters
                                    {
                                    pushFollow(FOLLOW_actualParameters_in_setOrDesignatorOrProcCall2325);
                                    actualParameters();

                                    state._fsp--;


                                    }
                                    break;

                            }


                            }
                            break;

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "setOrDesignatorOrProcCall"


    // $ANTLR start "actualParameters"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:432:1: actualParameters : '(' ( expList )? ')' ;
    public final void actualParameters() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:432:18: ( '(' ( expList )? ')' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:433:2: '(' ( expList )? ')'
            {
            match(input,67,FOLLOW_67_in_actualParameters2341); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:433:6: ( expList )?
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==NOT||LA49_0==IDENT||LA49_0==INTEGER||LA49_0==REAL||LA49_0==STRING||(LA49_0>=62 && LA49_0<=63)||LA49_0==67||(LA49_0>=69 && LA49_0<=70)) ) {
                alt49=1;
            }
            switch (alt49) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:433:6: expList
                    {
                    pushFollow(FOLLOW_expList_in_actualParameters2343);
                    expList();

                    state._fsp--;


                    }
                    break;

            }

            match(input,68,FOLLOW_68_in_actualParameters2346); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "actualParameters"


    // $ANTLR start "statement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:439:1: statement : ( assignmentOrProcCall | ifStatement | caseStatement | whileStatement | repeatStatement | loopStatement | forStatement | withStatement | EXIT | RETURN ( expression )? )? ;
    public final void statement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:439:11: ( ( assignmentOrProcCall | ifStatement | caseStatement | whileStatement | repeatStatement | loopStatement | forStatement | withStatement | EXIT | RETURN ( expression )? )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:440:2: ( assignmentOrProcCall | ifStatement | caseStatement | whileStatement | repeatStatement | loopStatement | forStatement | withStatement | EXIT | RETURN ( expression )? )?
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:440:2: ( assignmentOrProcCall | ifStatement | caseStatement | whileStatement | repeatStatement | loopStatement | forStatement | withStatement | EXIT | RETURN ( expression )? )?
            int alt51=11;
            alt51 = dfa51.predict(input);
            switch (alt51) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:440:4: assignmentOrProcCall
                    {
                    pushFollow(FOLLOW_assignmentOrProcCall_in_statement2362);
                    assignmentOrProcCall();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:440:27: ifStatement
                    {
                    pushFollow(FOLLOW_ifStatement_in_statement2366);
                    ifStatement();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:440:41: caseStatement
                    {
                    pushFollow(FOLLOW_caseStatement_in_statement2370);
                    caseStatement();

                    state._fsp--;


                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:441:4: whileStatement
                    {
                    pushFollow(FOLLOW_whileStatement_in_statement2377);
                    whileStatement();

                    state._fsp--;


                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:441:21: repeatStatement
                    {
                    pushFollow(FOLLOW_repeatStatement_in_statement2381);
                    repeatStatement();

                    state._fsp--;


                    }
                    break;
                case 6 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:441:39: loopStatement
                    {
                    pushFollow(FOLLOW_loopStatement_in_statement2385);
                    loopStatement();

                    state._fsp--;


                    }
                    break;
                case 7 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:441:55: forStatement
                    {
                    pushFollow(FOLLOW_forStatement_in_statement2389);
                    forStatement();

                    state._fsp--;


                    }
                    break;
                case 8 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:442:4: withStatement
                    {
                    pushFollow(FOLLOW_withStatement_in_statement2396);
                    withStatement();

                    state._fsp--;


                    }
                    break;
                case 9 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:442:20: EXIT
                    {
                    match(input,EXIT,FOLLOW_EXIT_in_statement2400); 

                    }
                    break;
                case 10 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:442:27: RETURN ( expression )?
                    {
                    match(input,RETURN,FOLLOW_RETURN_in_statement2404); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:442:34: ( expression )?
                    int alt50=2;
                    int LA50_0 = input.LA(1);

                    if ( (LA50_0==NOT||LA50_0==IDENT||LA50_0==INTEGER||LA50_0==REAL||LA50_0==STRING||(LA50_0>=62 && LA50_0<=63)||LA50_0==67||(LA50_0>=69 && LA50_0<=70)) ) {
                        alt50=1;
                    }
                    switch (alt50) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:442:34: expression
                            {
                            pushFollow(FOLLOW_expression_in_statement2406);
                            expression();

                            state._fsp--;


                            }
                            break;

                    }


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "statement"


    // $ANTLR start "assignmentOrProcCall"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:454:1: assignmentOrProcCall : designator ( ':=' expression | ( actualParameters )? ) ;
    public final void assignmentOrProcCall() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:454:22: ( designator ( ':=' expression | ( actualParameters )? ) )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:455:2: designator ( ':=' expression | ( actualParameters )? )
            {
            pushFollow(FOLLOW_designator_in_assignmentOrProcCall2430);
            designator();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:456:2: ( ':=' expression | ( actualParameters )? )
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==80) ) {
                alt53=1;
            }
            else if ( ((LA53_0>=ELSE && LA53_0<=END)||LA53_0==UNTIL||LA53_0==67||LA53_0==76||LA53_0==78) ) {
                alt53=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 53, 0, input);

                throw nvae;
            }
            switch (alt53) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:456:4: ':=' expression
                    {
                    match(input,80,FOLLOW_80_in_assignmentOrProcCall2437); 
                    pushFollow(FOLLOW_expression_in_assignmentOrProcCall2439);
                    expression();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:456:22: ( actualParameters )?
                    {
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:456:22: ( actualParameters )?
                    int alt52=2;
                    int LA52_0 = input.LA(1);

                    if ( (LA52_0==67) ) {
                        alt52=1;
                    }
                    switch (alt52) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:456:22: actualParameters
                            {
                            pushFollow(FOLLOW_actualParameters_in_assignmentOrProcCall2443);
                            actualParameters();

                            state._fsp--;


                            }
                            break;

                    }


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "assignmentOrProcCall"


    // $ANTLR start "statementSequence"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:461:1: statementSequence : statement ( ';' statement )* ;
    public final void statementSequence() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:461:19: ( statement ( ';' statement )* )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:462:2: statement ( ';' statement )*
            {
            pushFollow(FOLLOW_statement_in_statementSequence2459);
            statement();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:462:12: ( ';' statement )*
            loop54:
            do {
                int alt54=2;
                int LA54_0 = input.LA(1);

                if ( (LA54_0==76) ) {
                    alt54=1;
                }


                switch (alt54) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:462:14: ';' statement
            	    {
            	    match(input,76,FOLLOW_76_in_statementSequence2463); 
            	    pushFollow(FOLLOW_statement_in_statementSequence2465);
            	    statement();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop54;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "statementSequence"


    // $ANTLR start "ifStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:467:1: ifStatement : IF expression THEN statementSequence ( ELSIF expression THEN statementSequence )* ( ELSE statementSequence )? END ;
    public final void ifStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:467:13: ( IF expression THEN statementSequence ( ELSIF expression THEN statementSequence )* ( ELSE statementSequence )? END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:468:2: IF expression THEN statementSequence ( ELSIF expression THEN statementSequence )* ( ELSE statementSequence )? END
            {
            match(input,IF,FOLLOW_IF_in_ifStatement2481); 
            pushFollow(FOLLOW_expression_in_ifStatement2483);
            expression();

            state._fsp--;

            match(input,THEN,FOLLOW_THEN_in_ifStatement2485); 
            pushFollow(FOLLOW_statementSequence_in_ifStatement2487);
            statementSequence();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:469:2: ( ELSIF expression THEN statementSequence )*
            loop55:
            do {
                int alt55=2;
                int LA55_0 = input.LA(1);

                if ( (LA55_0==ELSIF) ) {
                    alt55=1;
                }


                switch (alt55) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:469:4: ELSIF expression THEN statementSequence
            	    {
            	    match(input,ELSIF,FOLLOW_ELSIF_in_ifStatement2492); 
            	    pushFollow(FOLLOW_expression_in_ifStatement2494);
            	    expression();

            	    state._fsp--;

            	    match(input,THEN,FOLLOW_THEN_in_ifStatement2496); 
            	    pushFollow(FOLLOW_statementSequence_in_ifStatement2498);
            	    statementSequence();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop55;
                }
            } while (true);

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:470:2: ( ELSE statementSequence )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==ELSE) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:470:4: ELSE statementSequence
                    {
                    match(input,ELSE,FOLLOW_ELSE_in_ifStatement2506); 
                    pushFollow(FOLLOW_statementSequence_in_ifStatement2508);
                    statementSequence();

                    state._fsp--;


                    }
                    break;

            }

            match(input,END,FOLLOW_END_in_ifStatement2514); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "ifStatement"


    // $ANTLR start "caseStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:476:1: caseStatement : CASE expression OF case ( '|' case )* ( ELSE statementSequence )? END ;
    public final void caseStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:476:15: ( CASE expression OF case ( '|' case )* ( ELSE statementSequence )? END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:477:2: CASE expression OF case ( '|' case )* ( ELSE statementSequence )? END
            {
            match(input,CASE,FOLLOW_CASE_in_caseStatement2527); 
            pushFollow(FOLLOW_expression_in_caseStatement2529);
            expression();

            state._fsp--;

            match(input,OF,FOLLOW_OF_in_caseStatement2531); 
            pushFollow(FOLLOW_case_in_caseStatement2533);
            mcase();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:477:26: ( '|' case )*
            loop57:
            do {
                int alt57=2;
                int LA57_0 = input.LA(1);

                if ( (LA57_0==78) ) {
                    alt57=1;
                }


                switch (alt57) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:477:28: '|' case
            	    {
            	    match(input,78,FOLLOW_78_in_caseStatement2537); 
            	    pushFollow(FOLLOW_case_in_caseStatement2539);
            	    mcase();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop57;
                }
            } while (true);

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:478:2: ( ELSE statementSequence )?
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==ELSE) ) {
                alt58=1;
            }
            switch (alt58) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:478:4: ELSE statementSequence
                    {
                    match(input,ELSE,FOLLOW_ELSE_in_caseStatement2547); 
                    pushFollow(FOLLOW_statementSequence_in_caseStatement2549);
                    statementSequence();

                    state._fsp--;


                    }
                    break;

            }

            match(input,END,FOLLOW_END_in_caseStatement2555); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "caseStatement"


    // $ANTLR start "case"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:484:1: case : caseLabelList ':' statementSequence ;
    public final void mcase() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:484:6: ( caseLabelList ':' statementSequence )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:485:2: caseLabelList ':' statementSequence
            {
            pushFollow(FOLLOW_caseLabelList_in_case2568);
            caseLabelList();

            state._fsp--;

            match(input,77,FOLLOW_77_in_case2570); 
            pushFollow(FOLLOW_statementSequence_in_case2572);
            statementSequence();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "case"


    // $ANTLR start "whileStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:490:1: whileStatement : WHILE expression DO statementSequence END ;
    public final void whileStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:490:16: ( WHILE expression DO statementSequence END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:491:2: WHILE expression DO statementSequence END
            {
            match(input,WHILE,FOLLOW_WHILE_in_whileStatement2585); 
            pushFollow(FOLLOW_expression_in_whileStatement2587);
            expression();

            state._fsp--;

            match(input,DO,FOLLOW_DO_in_whileStatement2589); 
            pushFollow(FOLLOW_statementSequence_in_whileStatement2591);
            statementSequence();

            state._fsp--;

            match(input,END,FOLLOW_END_in_whileStatement2593); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "whileStatement"


    // $ANTLR start "repeatStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:496:1: repeatStatement : REPEAT statementSequence UNTIL expression ;
    public final void repeatStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:496:17: ( REPEAT statementSequence UNTIL expression )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:497:2: REPEAT statementSequence UNTIL expression
            {
            match(input,REPEAT,FOLLOW_REPEAT_in_repeatStatement2606); 
            pushFollow(FOLLOW_statementSequence_in_repeatStatement2608);
            statementSequence();

            state._fsp--;

            match(input,UNTIL,FOLLOW_UNTIL_in_repeatStatement2610); 
            pushFollow(FOLLOW_expression_in_repeatStatement2612);
            expression();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "repeatStatement"


    // $ANTLR start "forStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:502:1: forStatement : FOR ident ':=' expression TO expression ( BY constExpression )? DO statementSequence END ;
    public final void forStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:502:14: ( FOR ident ':=' expression TO expression ( BY constExpression )? DO statementSequence END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:503:2: FOR ident ':=' expression TO expression ( BY constExpression )? DO statementSequence END
            {
            match(input,FOR,FOLLOW_FOR_in_forStatement2625); 
            pushFollow(FOLLOW_ident_in_forStatement2627);
            ident();

            state._fsp--;

            match(input,80,FOLLOW_80_in_forStatement2629); 
            pushFollow(FOLLOW_expression_in_forStatement2631);
            expression();

            state._fsp--;

            match(input,TO,FOLLOW_TO_in_forStatement2633); 
            pushFollow(FOLLOW_expression_in_forStatement2635);
            expression();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:503:42: ( BY constExpression )?
            int alt59=2;
            int LA59_0 = input.LA(1);

            if ( (LA59_0==BY) ) {
                alt59=1;
            }
            switch (alt59) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:503:44: BY constExpression
                    {
                    match(input,BY,FOLLOW_BY_in_forStatement2639); 
                    pushFollow(FOLLOW_constExpression_in_forStatement2641);
                    constExpression();

                    state._fsp--;


                    }
                    break;

            }

            match(input,DO,FOLLOW_DO_in_forStatement2647); 
            pushFollow(FOLLOW_statementSequence_in_forStatement2649);
            statementSequence();

            state._fsp--;

            match(input,END,FOLLOW_END_in_forStatement2651); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "forStatement"


    // $ANTLR start "loopStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:509:1: loopStatement : LOOP statementSequence END ;
    public final void loopStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:509:15: ( LOOP statementSequence END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:510:2: LOOP statementSequence END
            {
            match(input,LOOP,FOLLOW_LOOP_in_loopStatement2664); 
            pushFollow(FOLLOW_statementSequence_in_loopStatement2666);
            statementSequence();

            state._fsp--;

            match(input,END,FOLLOW_END_in_loopStatement2668); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "loopStatement"


    // $ANTLR start "withStatement"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:515:1: withStatement : WITH designator DO statementSequence END ;
    public final void withStatement() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:515:15: ( WITH designator DO statementSequence END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:516:2: WITH designator DO statementSequence END
            {
            match(input,WITH,FOLLOW_WITH_in_withStatement2681); 
            pushFollow(FOLLOW_designator_in_withStatement2683);
            designator();

            state._fsp--;

            match(input,DO,FOLLOW_DO_in_withStatement2685); 
            pushFollow(FOLLOW_statementSequence_in_withStatement2687);
            statementSequence();

            state._fsp--;

            match(input,END,FOLLOW_END_in_withStatement2689); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "withStatement"


    // $ANTLR start "procedureDeclaration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:521:1: procedureDeclaration : procedureHeading ';' block ident ;
    public final void procedureDeclaration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:521:22: ( procedureHeading ';' block ident )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:522:2: procedureHeading ';' block ident
            {
            pushFollow(FOLLOW_procedureHeading_in_procedureDeclaration2702);
            procedureHeading();

            state._fsp--;

            match(input,76,FOLLOW_76_in_procedureDeclaration2704); 
            pushFollow(FOLLOW_block_in_procedureDeclaration2706);
            block();

            state._fsp--;

            pushFollow(FOLLOW_ident_in_procedureDeclaration2708);
            ident();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "procedureDeclaration"


    // $ANTLR start "procedureHeading"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:527:1: procedureHeading : PROCEDURE ident ( formalParameters )? ;
    public final void procedureHeading() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:527:18: ( PROCEDURE ident ( formalParameters )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:528:2: PROCEDURE ident ( formalParameters )?
            {
            match(input,PROCEDURE,FOLLOW_PROCEDURE_in_procedureHeading2721); 
            pushFollow(FOLLOW_ident_in_procedureHeading2723);
            ident();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:528:18: ( formalParameters )?
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==67) ) {
                alt60=1;
            }
            switch (alt60) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:528:18: formalParameters
                    {
                    pushFollow(FOLLOW_formalParameters_in_procedureHeading2725);
                    formalParameters();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "procedureHeading"


    // $ANTLR start "block"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:533:1: block : ( declaration )* ( BEGIN statementSequence )? END ;
    public final void block() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:533:7: ( ( declaration )* ( BEGIN statementSequence )? END )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:534:2: ( declaration )* ( BEGIN statementSequence )? END
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:534:2: ( declaration )*
            loop61:
            do {
                int alt61=2;
                int LA61_0 = input.LA(1);

                if ( (LA61_0==CONST||LA61_0==MODULE||LA61_0==PROCEDURE||LA61_0==TYPE||LA61_0==VAR) ) {
                    alt61=1;
                }


                switch (alt61) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:534:2: declaration
            	    {
            	    pushFollow(FOLLOW_declaration_in_block2739);
            	    declaration();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop61;
                }
            } while (true);

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:535:2: ( BEGIN statementSequence )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==BEGIN) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:535:4: BEGIN statementSequence
                    {
                    match(input,BEGIN,FOLLOW_BEGIN_in_block2745); 
                    pushFollow(FOLLOW_statementSequence_in_block2747);
                    statementSequence();

                    state._fsp--;


                    }
                    break;

            }

            match(input,END,FOLLOW_END_in_block2752); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "block"


    // $ANTLR start "declaration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:540:1: declaration : ( CONST ( constantDeclaration ';' )* | TYPE ( typeDeclaration ';' )* | VAR ( variableDeclaration ';' )* | procedureDeclaration ';' | moduleDeclaration ';' );
    public final void declaration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:540:13: ( CONST ( constantDeclaration ';' )* | TYPE ( typeDeclaration ';' )* | VAR ( variableDeclaration ';' )* | procedureDeclaration ';' | moduleDeclaration ';' )
            int alt66=5;
            switch ( input.LA(1) ) {
            case CONST:
                {
                alt66=1;
                }
                break;
            case TYPE:
                {
                alt66=2;
                }
                break;
            case VAR:
                {
                alt66=3;
                }
                break;
            case PROCEDURE:
                {
                alt66=4;
                }
                break;
            case MODULE:
                {
                alt66=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 66, 0, input);

                throw nvae;
            }

            switch (alt66) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:541:2: CONST ( constantDeclaration ';' )*
                    {
                    match(input,CONST,FOLLOW_CONST_in_declaration2765); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:541:8: ( constantDeclaration ';' )*
                    loop63:
                    do {
                        int alt63=2;
                        int LA63_0 = input.LA(1);

                        if ( (LA63_0==IDENT) ) {
                            alt63=1;
                        }


                        switch (alt63) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:541:10: constantDeclaration ';'
                    	    {
                    	    pushFollow(FOLLOW_constantDeclaration_in_declaration2769);
                    	    constantDeclaration();

                    	    state._fsp--;

                    	    match(input,76,FOLLOW_76_in_declaration2771); 

                    	    }
                    	    break;

                    	default :
                    	    break loop63;
                        }
                    } while (true);


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:542:2: TYPE ( typeDeclaration ';' )*
                    {
                    match(input,TYPE,FOLLOW_TYPE_in_declaration2779); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:542:7: ( typeDeclaration ';' )*
                    loop64:
                    do {
                        int alt64=2;
                        int LA64_0 = input.LA(1);

                        if ( (LA64_0==IDENT) ) {
                            alt64=1;
                        }


                        switch (alt64) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:542:9: typeDeclaration ';'
                    	    {
                    	    pushFollow(FOLLOW_typeDeclaration_in_declaration2783);
                    	    typeDeclaration();

                    	    state._fsp--;

                    	    match(input,76,FOLLOW_76_in_declaration2785); 

                    	    }
                    	    break;

                    	default :
                    	    break loop64;
                        }
                    } while (true);


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:543:2: VAR ( variableDeclaration ';' )*
                    {
                    match(input,VAR,FOLLOW_VAR_in_declaration2793); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:543:6: ( variableDeclaration ';' )*
                    loop65:
                    do {
                        int alt65=2;
                        int LA65_0 = input.LA(1);

                        if ( (LA65_0==IDENT) ) {
                            alt65=1;
                        }


                        switch (alt65) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:543:8: variableDeclaration ';'
                    	    {
                    	    pushFollow(FOLLOW_variableDeclaration_in_declaration2797);
                    	    variableDeclaration();

                    	    state._fsp--;

                    	    match(input,76,FOLLOW_76_in_declaration2799); 

                    	    }
                    	    break;

                    	default :
                    	    break loop65;
                        }
                    } while (true);


                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:544:2: procedureDeclaration ';'
                    {
                    pushFollow(FOLLOW_procedureDeclaration_in_declaration2807);
                    procedureDeclaration();

                    state._fsp--;

                    match(input,76,FOLLOW_76_in_declaration2809); 

                    }
                    break;
                case 5 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:545:2: moduleDeclaration ';'
                    {
                    pushFollow(FOLLOW_moduleDeclaration_in_declaration2814);
                    moduleDeclaration();

                    state._fsp--;

                    match(input,76,FOLLOW_76_in_declaration2816); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "declaration"


    // $ANTLR start "formalParameters"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:550:1: formalParameters : '(' ( fpSection ( ';' fpSection )* )? ')' ( ':' qualident )? ;
    public final void formalParameters() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:550:18: ( '(' ( fpSection ( ';' fpSection )* )? ')' ( ':' qualident )? )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:2: '(' ( fpSection ( ';' fpSection )* )? ')' ( ':' qualident )?
            {
            match(input,67,FOLLOW_67_in_formalParameters2829); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:6: ( fpSection ( ';' fpSection )* )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==VAR||LA68_0==IDENT) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:8: fpSection ( ';' fpSection )*
                    {
                    pushFollow(FOLLOW_fpSection_in_formalParameters2833);
                    fpSection();

                    state._fsp--;

                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:18: ( ';' fpSection )*
                    loop67:
                    do {
                        int alt67=2;
                        int LA67_0 = input.LA(1);

                        if ( (LA67_0==76) ) {
                            alt67=1;
                        }


                        switch (alt67) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:20: ';' fpSection
                    	    {
                    	    match(input,76,FOLLOW_76_in_formalParameters2837); 
                    	    pushFollow(FOLLOW_fpSection_in_formalParameters2839);
                    	    fpSection();

                    	    state._fsp--;


                    	    }
                    	    break;

                    	default :
                    	    break loop67;
                        }
                    } while (true);


                    }
                    break;

            }

            match(input,68,FOLLOW_68_in_formalParameters2847); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:44: ( ':' qualident )?
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==77) ) {
                alt69=1;
            }
            switch (alt69) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:551:46: ':' qualident
                    {
                    match(input,77,FOLLOW_77_in_formalParameters2851); 
                    pushFollow(FOLLOW_qualident_in_formalParameters2853);
                    qualident();

                    state._fsp--;


                    }
                    break;

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "formalParameters"


    // $ANTLR start "fpSection"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:556:1: fpSection : ( VAR )? identList ':' formalType ;
    public final void fpSection() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:556:11: ( ( VAR )? identList ':' formalType )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:557:2: ( VAR )? identList ':' formalType
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:557:2: ( VAR )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( (LA70_0==VAR) ) {
                alt70=1;
            }
            switch (alt70) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:557:2: VAR
                    {
                    match(input,VAR,FOLLOW_VAR_in_fpSection2869); 

                    }
                    break;

            }

            pushFollow(FOLLOW_identList_in_fpSection2872);
            identList();

            state._fsp--;

            match(input,77,FOLLOW_77_in_fpSection2874); 
            pushFollow(FOLLOW_formalType_in_fpSection2876);
            formalType();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "fpSection"


    // $ANTLR start "formalType"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:562:1: formalType : ( ARRAY OF )? qualident ;
    public final void formalType() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:562:12: ( ( ARRAY OF )? qualident )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:563:2: ( ARRAY OF )? qualident
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:563:2: ( ARRAY OF )?
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( (LA71_0==ARRAY) ) {
                alt71=1;
            }
            switch (alt71) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:563:4: ARRAY OF
                    {
                    match(input,ARRAY,FOLLOW_ARRAY_in_formalType2891); 
                    match(input,OF,FOLLOW_OF_in_formalType2893); 

                    }
                    break;

            }

            pushFollow(FOLLOW_qualident_in_formalType2898);
            qualident();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "formalType"


    // $ANTLR start "moduleDeclaration"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:568:1: moduleDeclaration : MODULE ident ( priority )? ';' ( importList )* ( exportList )? block ident ;
    public final void moduleDeclaration() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:568:19: ( MODULE ident ( priority )? ';' ( importList )* ( exportList )? block ident )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:569:2: MODULE ident ( priority )? ';' ( importList )* ( exportList )? block ident
            {
            match(input,MODULE,FOLLOW_MODULE_in_moduleDeclaration2911); 
            pushFollow(FOLLOW_ident_in_moduleDeclaration2913);
            ident();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:569:15: ( priority )?
            int alt72=2;
            int LA72_0 = input.LA(1);

            if ( (LA72_0==74) ) {
                alt72=1;
            }
            switch (alt72) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:569:15: priority
                    {
                    pushFollow(FOLLOW_priority_in_moduleDeclaration2915);
                    priority();

                    state._fsp--;


                    }
                    break;

            }

            match(input,76,FOLLOW_76_in_moduleDeclaration2918); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:570:2: ( importList )*
            loop73:
            do {
                int alt73=2;
                int LA73_0 = input.LA(1);

                if ( (LA73_0==FROM||LA73_0==IMPORT) ) {
                    alt73=1;
                }


                switch (alt73) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:570:2: importList
            	    {
            	    pushFollow(FOLLOW_importList_in_moduleDeclaration2921);
            	    importList();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop73;
                }
            } while (true);

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:570:14: ( exportList )?
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==EXPORT) ) {
                alt74=1;
            }
            switch (alt74) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:570:14: exportList
                    {
                    pushFollow(FOLLOW_exportList_in_moduleDeclaration2924);
                    exportList();

                    state._fsp--;


                    }
                    break;

            }

            pushFollow(FOLLOW_block_in_moduleDeclaration2928);
            block();

            state._fsp--;

            pushFollow(FOLLOW_ident_in_moduleDeclaration2930);
            ident();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "moduleDeclaration"


    // $ANTLR start "priority"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:576:1: priority : '[' constExpression ']' ;
    public final void priority() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:576:10: ( '[' constExpression ']' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:577:2: '[' constExpression ']'
            {
            match(input,74,FOLLOW_74_in_priority2943); 
            pushFollow(FOLLOW_constExpression_in_priority2945);
            constExpression();

            state._fsp--;

            match(input,75,FOLLOW_75_in_priority2947); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "priority"


    // $ANTLR start "exportList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:582:1: exportList : EXPORT ( QUALIFIED )? identList ';' ;
    public final void exportList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:582:12: ( EXPORT ( QUALIFIED )? identList ';' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:583:2: EXPORT ( QUALIFIED )? identList ';'
            {
            match(input,EXPORT,FOLLOW_EXPORT_in_exportList2960); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:583:9: ( QUALIFIED )?
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==QUALIFIED) ) {
                alt75=1;
            }
            switch (alt75) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:583:9: QUALIFIED
                    {
                    match(input,QUALIFIED,FOLLOW_QUALIFIED_in_exportList2962); 

                    }
                    break;

            }

            pushFollow(FOLLOW_identList_in_exportList2965);
            identList();

            state._fsp--;

            match(input,76,FOLLOW_76_in_exportList2967); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "exportList"


    // $ANTLR start "importList"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:588:1: importList : ( FROM ident )? IMPORT identList ';' ;
    public final void importList() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:588:12: ( ( FROM ident )? IMPORT identList ';' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:589:2: ( FROM ident )? IMPORT identList ';'
            {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:589:2: ( FROM ident )?
            int alt76=2;
            int LA76_0 = input.LA(1);

            if ( (LA76_0==FROM) ) {
                alt76=1;
            }
            switch (alt76) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:589:4: FROM ident
                    {
                    match(input,FROM,FOLLOW_FROM_in_importList2982); 
                    pushFollow(FOLLOW_ident_in_importList2984);
                    ident();

                    state._fsp--;


                    }
                    break;

            }

            match(input,IMPORT,FOLLOW_IMPORT_in_importList2989); 
            pushFollow(FOLLOW_identList_in_importList2991);
            identList();

            state._fsp--;

            match(input,76,FOLLOW_76_in_importList2993); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "importList"


    // $ANTLR start "definitionModule"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:594:1: definitionModule : DEFINITION MODULE ident ';' ( importList )* ( exportList )? ( definition )* END ident '.' ;
    public final void definitionModule() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:594:18: ( DEFINITION MODULE ident ';' ( importList )* ( exportList )? ( definition )* END ident '.' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:595:2: DEFINITION MODULE ident ';' ( importList )* ( exportList )? ( definition )* END ident '.'
            {
            match(input,DEFINITION,FOLLOW_DEFINITION_in_definitionModule3006); 
            match(input,MODULE,FOLLOW_MODULE_in_definitionModule3008); 
            pushFollow(FOLLOW_ident_in_definitionModule3010);
            ident();

            state._fsp--;

            match(input,76,FOLLOW_76_in_definitionModule3012); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:596:2: ( importList )*
            loop77:
            do {
                int alt77=2;
                int LA77_0 = input.LA(1);

                if ( (LA77_0==FROM||LA77_0==IMPORT) ) {
                    alt77=1;
                }


                switch (alt77) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:596:2: importList
            	    {
            	    pushFollow(FOLLOW_importList_in_definitionModule3015);
            	    importList();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop77;
                }
            } while (true);

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:596:14: ( exportList )?
            int alt78=2;
            int LA78_0 = input.LA(1);

            if ( (LA78_0==EXPORT) ) {
                alt78=1;
            }
            switch (alt78) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:596:14: exportList
                    {
                    pushFollow(FOLLOW_exportList_in_definitionModule3018);
                    exportList();

                    state._fsp--;


                    }
                    break;

            }

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:596:26: ( definition )*
            loop79:
            do {
                int alt79=2;
                int LA79_0 = input.LA(1);

                if ( (LA79_0==CONST||LA79_0==PROCEDURE||LA79_0==TYPE||LA79_0==VAR) ) {
                    alt79=1;
                }


                switch (alt79) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:596:26: definition
            	    {
            	    pushFollow(FOLLOW_definition_in_definitionModule3021);
            	    definition();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop79;
                }
            } while (true);

            match(input,END,FOLLOW_END_in_definitionModule3025); 
            pushFollow(FOLLOW_ident_in_definitionModule3027);
            ident();

            state._fsp--;

            match(input,54,FOLLOW_54_in_definitionModule3029); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "definitionModule"


    // $ANTLR start "definition"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:602:1: definition : ( CONST ( constantDeclaration ';' )* | TYPE ( ident ( '=' type )? ';' )* | VAR ( variableDeclaration ';' )* | procedureHeading ';' );
    public final void definition() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:602:12: ( CONST ( constantDeclaration ';' )* | TYPE ( ident ( '=' type )? ';' )* | VAR ( variableDeclaration ';' )* | procedureHeading ';' )
            int alt84=4;
            switch ( input.LA(1) ) {
            case CONST:
                {
                alt84=1;
                }
                break;
            case TYPE:
                {
                alt84=2;
                }
                break;
            case VAR:
                {
                alt84=3;
                }
                break;
            case PROCEDURE:
                {
                alt84=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 84, 0, input);

                throw nvae;
            }

            switch (alt84) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:603:2: CONST ( constantDeclaration ';' )*
                    {
                    match(input,CONST,FOLLOW_CONST_in_definition3042); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:603:8: ( constantDeclaration ';' )*
                    loop80:
                    do {
                        int alt80=2;
                        int LA80_0 = input.LA(1);

                        if ( (LA80_0==IDENT) ) {
                            alt80=1;
                        }


                        switch (alt80) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:603:10: constantDeclaration ';'
                    	    {
                    	    pushFollow(FOLLOW_constantDeclaration_in_definition3046);
                    	    constantDeclaration();

                    	    state._fsp--;

                    	    match(input,76,FOLLOW_76_in_definition3048); 

                    	    }
                    	    break;

                    	default :
                    	    break loop80;
                        }
                    } while (true);


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:604:2: TYPE ( ident ( '=' type )? ';' )*
                    {
                    match(input,TYPE,FOLLOW_TYPE_in_definition3056); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:604:7: ( ident ( '=' type )? ';' )*
                    loop82:
                    do {
                        int alt82=2;
                        int LA82_0 = input.LA(1);

                        if ( (LA82_0==IDENT) ) {
                            alt82=1;
                        }


                        switch (alt82) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:604:9: ident ( '=' type )? ';'
                    	    {
                    	    pushFollow(FOLLOW_ident_in_definition3060);
                    	    ident();

                    	    state._fsp--;

                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:604:15: ( '=' type )?
                    	    int alt81=2;
                    	    int LA81_0 = input.LA(1);

                    	    if ( (LA81_0==55) ) {
                    	        alt81=1;
                    	    }
                    	    switch (alt81) {
                    	        case 1 :
                    	            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:604:17: '=' type
                    	            {
                    	            match(input,55,FOLLOW_55_in_definition3064); 
                    	            pushFollow(FOLLOW_type_in_definition3066);
                    	            type();

                    	            state._fsp--;


                    	            }
                    	            break;

                    	    }

                    	    match(input,76,FOLLOW_76_in_definition3071); 

                    	    }
                    	    break;

                    	default :
                    	    break loop82;
                        }
                    } while (true);


                    }
                    break;
                case 3 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:605:2: VAR ( variableDeclaration ';' )*
                    {
                    match(input,VAR,FOLLOW_VAR_in_definition3079); 
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:605:6: ( variableDeclaration ';' )*
                    loop83:
                    do {
                        int alt83=2;
                        int LA83_0 = input.LA(1);

                        if ( (LA83_0==IDENT) ) {
                            alt83=1;
                        }


                        switch (alt83) {
                    	case 1 :
                    	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:605:8: variableDeclaration ';'
                    	    {
                    	    pushFollow(FOLLOW_variableDeclaration_in_definition3083);
                    	    variableDeclaration();

                    	    state._fsp--;

                    	    match(input,76,FOLLOW_76_in_definition3085); 

                    	    }
                    	    break;

                    	default :
                    	    break loop83;
                        }
                    } while (true);


                    }
                    break;
                case 4 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:606:2: procedureHeading ';'
                    {
                    pushFollow(FOLLOW_procedureHeading_in_definition3093);
                    procedureHeading();

                    state._fsp--;

                    match(input,76,FOLLOW_76_in_definition3095); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "definition"


    // $ANTLR start "programModule"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:611:1: programModule : MODULE ident ( priority )? ';' ( importList )* block ident '.' ;
    public final void programModule() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:611:15: ( MODULE ident ( priority )? ';' ( importList )* block ident '.' )
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:612:2: MODULE ident ( priority )? ';' ( importList )* block ident '.'
            {
            match(input,MODULE,FOLLOW_MODULE_in_programModule3108); 
            pushFollow(FOLLOW_ident_in_programModule3110);
            ident();

            state._fsp--;

            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:612:15: ( priority )?
            int alt85=2;
            int LA85_0 = input.LA(1);

            if ( (LA85_0==74) ) {
                alt85=1;
            }
            switch (alt85) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:612:15: priority
                    {
                    pushFollow(FOLLOW_priority_in_programModule3112);
                    priority();

                    state._fsp--;


                    }
                    break;

            }

            match(input,76,FOLLOW_76_in_programModule3115); 
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:613:2: ( importList )*
            loop86:
            do {
                int alt86=2;
                int LA86_0 = input.LA(1);

                if ( (LA86_0==FROM||LA86_0==IMPORT) ) {
                    alt86=1;
                }


                switch (alt86) {
            	case 1 :
            	    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:613:2: importList
            	    {
            	    pushFollow(FOLLOW_importList_in_programModule3118);
            	    importList();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop86;
                }
            } while (true);

            pushFollow(FOLLOW_block_in_programModule3121);
            block();

            state._fsp--;

            pushFollow(FOLLOW_ident_in_programModule3123);
            ident();

            state._fsp--;

            match(input,54,FOLLOW_54_in_programModule3125); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "programModule"


    // $ANTLR start "compilationUnit"
    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:618:1: compilationUnit : ( definitionModule | ( IMPLEMENTATION )? programModule );
    public final void compilationUnit() throws RecognitionException {
        try {
            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:618:17: ( definitionModule | ( IMPLEMENTATION )? programModule )
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==DEFINITION) ) {
                alt88=1;
            }
            else if ( (LA88_0==IMPLEMENTATION||LA88_0==MODULE) ) {
                alt88=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 88, 0, input);

                throw nvae;
            }
            switch (alt88) {
                case 1 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:619:2: definitionModule
                    {
                    pushFollow(FOLLOW_definitionModule_in_compilationUnit3139);
                    definitionModule();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:619:21: ( IMPLEMENTATION )? programModule
                    {
                    // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:619:21: ( IMPLEMENTATION )?
                    int alt87=2;
                    int LA87_0 = input.LA(1);

                    if ( (LA87_0==IMPLEMENTATION) ) {
                        alt87=1;
                    }
                    switch (alt87) {
                        case 1 :
                            // C:\\JavaWorkspace\\javadevelopment\\JModula\\src\\main\\resources\\m2pim4_LL1.g:619:21: IMPLEMENTATION
                            {
                            match(input,IMPLEMENTATION,FOLLOW_IMPLEMENTATION_in_compilationUnit3143); 

                            }
                            break;

                    }

                    pushFollow(FOLLOW_programModule_in_compilationUnit3146);
                    programModule();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "compilationUnit"

    // Delegated rules


    protected DFA51 dfa51 = new DFA51(this);
    static final String DFA51_eotS =
        "\14\uffff";
    static final String DFA51_eofS =
        "\14\uffff";
    static final String DFA51_minS =
        "\1\10\13\uffff";
    static final String DFA51_maxS =
        "\1\116\13\uffff";
    static final String DFA51_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13";
    static final String DFA51_specialS =
        "\14\uffff}>";
    static final String[] DFA51_transitionS = {
            "\1\3\4\uffff\3\13\1\11\1\uffff\1\7\1\uffff\1\2\3\uffff\1\6"+
            "\11\uffff\1\5\1\12\4\uffff\1\13\1\uffff\1\4\1\10\2\uffff\1\1"+
            "\35\uffff\1\13\1\uffff\1\13",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA51_eot = DFA.unpackEncodedString(DFA51_eotS);
    static final short[] DFA51_eof = DFA.unpackEncodedString(DFA51_eofS);
    static final char[] DFA51_min = DFA.unpackEncodedStringToUnsignedChars(DFA51_minS);
    static final char[] DFA51_max = DFA.unpackEncodedStringToUnsignedChars(DFA51_maxS);
    static final short[] DFA51_accept = DFA.unpackEncodedString(DFA51_acceptS);
    static final short[] DFA51_special = DFA.unpackEncodedString(DFA51_specialS);
    static final short[][] DFA51_transition;

    static {
        int numStates = DFA51_transitionS.length;
        DFA51_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA51_transition[i] = DFA.unpackEncodedString(DFA51_transitionS[i]);
        }
    }

    class DFA51 extends DFA {

        public DFA51(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 51;
            this.eot = DFA51_eot;
            this.eof = DFA51_eof;
            this.min = DFA51_min;
            this.max = DFA51_max;
            this.accept = DFA51_accept;
            this.special = DFA51_special;
            this.transition = DFA51_transition;
        }
        public String getDescription() {
            return "440:2: ( assignmentOrProcCall | ifStatement | caseStatement | whileStatement | repeatStatement | loopStatement | forStatement | withStatement | EXIT | RETURN ( expression )? )?";
        }
    }
 

    public static final BitSet FOLLOW_IDENT_in_ident1183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_number0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INTEGER_in_integer1211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_REAL_in_real1223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SCALE_FACTOR_in_scaleFactor1235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_HEX_DIGIT_in_hexDigit1247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DIGIT_in_digit1259 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OCTAL_DIGIT_in_octalDigit1271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRING_in_string1283 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ident_in_qualident1296 = new BitSet(new long[]{0x0040000000000002L});
    public static final BitSet FOLLOW_54_in_qualident1300 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_qualident1302 = new BitSet(new long[]{0x0040000000000002L});
    public static final BitSet FOLLOW_ident_in_constantDeclaration1319 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_55_in_constantDeclaration1321 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_constantDeclaration1323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_simpleConstExpr_in_constExpression1336 = new BitSet(new long[]{0x3F80000000800002L});
    public static final BitSet FOLLOW_relation_in_constExpression1340 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_simpleConstExpr_in_constExpression1342 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_55_in_relation1358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_relation1362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_relation1366 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_relation1370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_relation1374 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_relation1378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_relation1382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IN_in_relation1386 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_simpleConstExpr1403 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_63_in_simpleConstExpr1407 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constTerm_in_simpleConstExpr1413 = new BitSet(new long[]{0xC000000020000002L});
    public static final BitSet FOLLOW_addOperator_in_simpleConstExpr1417 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constTerm_in_simpleConstExpr1419 = new BitSet(new long[]{0xC000000020000002L});
    public static final BitSet FOLLOW_62_in_addOperator1435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_addOperator1439 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_OR_in_addOperator1443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constFactor_in_constTerm1460 = new BitSet(new long[]{0x0000000002000812L,0x0000000000000007L});
    public static final BitSet FOLLOW_mulOperator_in_constTerm1464 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constFactor_in_constTerm1466 = new BitSet(new long[]{0x0000000002000812L,0x0000000000000007L});
    public static final BitSet FOLLOW_64_in_mulOperator1482 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_mulOperator1486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DIV_in_mulOperator1490 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_MOD_in_mulOperator1494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_AND_in_mulOperator1498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_mulOperator1502 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_number_in_constFactor1523 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_string_in_constFactor1527 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_setOrQualident_in_constFactor1531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_constFactor1536 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_constFactor1538 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_68_in_constFactor1540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_constFactor1546 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_69_in_constFactor1550 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constFactor_in_constFactor1555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_setOrQualident1567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualident_in_setOrQualident1571 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
    public static final BitSet FOLLOW_set_in_setOrQualident1573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_set1591 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000168L});
    public static final BitSet FOLLOW_element_in_set1595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000180L});
    public static final BitSet FOLLOW_71_in_set1599 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_element_in_set1601 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000180L});
    public static final BitSet FOLLOW_72_in_set1609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_constExpression_in_element1622 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
    public static final BitSet FOLLOW_73_in_element1626 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_element1628 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ident_in_typeDeclaration1644 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_55_in_typeDeclaration1646 = new BitSet(new long[]{0x00004012C0000020L,0x0000000000000448L});
    public static final BitSet FOLLOW_type_in_typeDeclaration1648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_simpleType_in_type1661 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arrayType_in_type1665 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_recordType_in_type1669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_setType_in_type1673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_pointerType_in_type1677 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_procedureType_in_type1681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualident_in_simpleType1694 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_enumeration_in_simpleType1698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_subrangeType_in_simpleType1702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_enumeration1715 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_identList_in_enumeration1717 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_68_in_enumeration1719 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ident_in_identList1732 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_identList1736 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_identList1738 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_74_in_subrangeType1754 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_subrangeType1756 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_73_in_subrangeType1758 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_subrangeType1760 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_subrangeType1762 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ARRAY_in_arrayType1775 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000448L});
    public static final BitSet FOLLOW_simpleType_in_arrayType1777 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_arrayType1781 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000448L});
    public static final BitSet FOLLOW_simpleType_in_arrayType1783 = new BitSet(new long[]{0x0000000010000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_OF_in_arrayType1788 = new BitSet(new long[]{0x00004012C0000020L,0x0000000000000448L});
    public static final BitSet FOLLOW_type_in_arrayType1790 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RECORD_in_recordType1803 = new BitSet(new long[]{0x0000400000000100L,0x0000000000001000L});
    public static final BitSet FOLLOW_fieldListSequence_in_recordType1805 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_recordType1807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_fieldList_in_fieldListSequence1820 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_fieldListSequence1824 = new BitSet(new long[]{0x0000400000000100L,0x0000000000001000L});
    public static final BitSet FOLLOW_fieldList_in_fieldListSequence1826 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_identList_in_fieldList1845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_fieldList1847 = new BitSet(new long[]{0x00004012C0000020L,0x0000000000000448L});
    public static final BitSet FOLLOW_type_in_fieldList1849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CASE_in_fieldList1856 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_fieldList1858 = new BitSet(new long[]{0x0040000010000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_fieldList1864 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_54_in_fieldList1868 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_qualident_in_fieldList1873 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_OF_in_fieldList1878 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_variant_in_fieldList1880 = new BitSet(new long[]{0x000000000000A000L,0x0000000000004000L});
    public static final BitSet FOLLOW_78_in_fieldList1884 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_variant_in_fieldList1886 = new BitSet(new long[]{0x000000000000A000L,0x0000000000004000L});
    public static final BitSet FOLLOW_ELSE_in_fieldList1896 = new BitSet(new long[]{0x0000400000000100L,0x0000000000001000L});
    public static final BitSet FOLLOW_fieldListSequence_in_fieldList1898 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_fieldList1906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_caseLabelList_in_variant1922 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_variant1924 = new BitSet(new long[]{0x0000400000000100L,0x0000000000001000L});
    public static final BitSet FOLLOW_fieldListSequence_in_variant1926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_caseLabels_in_caseLabelList1939 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_caseLabelList1943 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_caseLabels_in_caseLabelList1945 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_constExpression_in_caseLabels1961 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
    public static final BitSet FOLLOW_73_in_caseLabels1965 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_caseLabels1967 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SET_in_setType1983 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_OF_in_setType1985 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000448L});
    public static final BitSet FOLLOW_simpleType_in_setType1987 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_POINTER_in_pointerType2000 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_TO_in_pointerType2002 = new BitSet(new long[]{0x00004012C0000020L,0x0000000000000448L});
    public static final BitSet FOLLOW_type_in_pointerType2004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PROCEDURE_in_procedureType2017 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_formalTypeList_in_procedureType2019 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_formalTypeList2033 = new BitSet(new long[]{0x0000420000000020L,0x0000000000000050L});
    public static final BitSet FOLLOW_VAR_in_formalTypeList2037 = new BitSet(new long[]{0x0000420000000020L,0x0000000000000040L});
    public static final BitSet FOLLOW_formalType_in_formalTypeList2040 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000090L});
    public static final BitSet FOLLOW_71_in_formalTypeList2044 = new BitSet(new long[]{0x0000420000000020L,0x0000000000000040L});
    public static final BitSet FOLLOW_VAR_in_formalTypeList2046 = new BitSet(new long[]{0x0000420000000020L,0x0000000000000040L});
    public static final BitSet FOLLOW_formalType_in_formalTypeList2049 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000090L});
    public static final BitSet FOLLOW_68_in_formalTypeList2057 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_formalTypeList2062 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_qualident_in_formalTypeList2064 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_identList_in_variableDeclaration2080 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_variableDeclaration2082 = new BitSet(new long[]{0x00004012C0000020L,0x0000000000000448L});
    public static final BitSet FOLLOW_type_in_variableDeclaration2084 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualident_in_designator2098 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008400L});
    public static final BitSet FOLLOW_designatorTail_in_designator2102 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_designatorTail2121 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expList_in_designatorTail2123 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_designatorTail2125 = new BitSet(new long[]{0x0040000000000002L,0x0000000000008400L});
    public static final BitSet FOLLOW_79_in_designatorTail2129 = new BitSet(new long[]{0x0040000000000002L,0x0000000000008400L});
    public static final BitSet FOLLOW_54_in_designatorTail2135 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_designatorTail2137 = new BitSet(new long[]{0x0040000000000002L,0x0000000000008400L});
    public static final BitSet FOLLOW_expression_in_expList2156 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_expList2160 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_expList2162 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_simpleExpression_in_expression2178 = new BitSet(new long[]{0x3F80000000800002L});
    public static final BitSet FOLLOW_relation_in_expression2182 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_simpleExpression_in_expression2184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_simpleExpression2202 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_63_in_simpleExpression2206 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_term_in_simpleExpression2212 = new BitSet(new long[]{0xC000000020000002L});
    public static final BitSet FOLLOW_addOperator_in_simpleExpression2216 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_term_in_simpleExpression2218 = new BitSet(new long[]{0xC000000020000002L});
    public static final BitSet FOLLOW_factor_in_term2234 = new BitSet(new long[]{0x0000000002000812L,0x0000000000000007L});
    public static final BitSet FOLLOW_mulOperator_in_term2238 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_factor_in_term2240 = new BitSet(new long[]{0x0000000002000812L,0x0000000000000007L});
    public static final BitSet FOLLOW_number_in_factor2260 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_string_in_factor2265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_setOrDesignatorOrProcCall_in_factor2270 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_factor2275 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_factor2277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_68_in_factor2279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_factor2285 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_69_in_factor2289 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_factor_in_factor2294 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_setOrDesignatorOrProcCall2306 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_qualident_in_setOrDesignatorOrProcCall2311 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008448L});
    public static final BitSet FOLLOW_set_in_setOrDesignatorOrProcCall2318 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_designatorTail_in_setOrDesignatorOrProcCall2322 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_actualParameters_in_setOrDesignatorOrProcCall2325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_actualParameters2341 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000078L});
    public static final BitSet FOLLOW_expList_in_actualParameters2343 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_68_in_actualParameters2346 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assignmentOrProcCall_in_statement2362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ifStatement_in_statement2366 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_caseStatement_in_statement2370 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_whileStatement_in_statement2377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_repeatStatement_in_statement2381 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_loopStatement_in_statement2385 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_forStatement_in_statement2389 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_withStatement_in_statement2396 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EXIT_in_statement2400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RETURN_in_statement2404 = new BitSet(new long[]{0xC02A400008000002L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_statement2406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_designator_in_assignmentOrProcCall2430 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010008L});
    public static final BitSet FOLLOW_80_in_assignmentOrProcCall2437 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_assignmentOrProcCall2439 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_actualParameters_in_assignmentOrProcCall2443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_statementSequence2459 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_statementSequence2463 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statement_in_statementSequence2465 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
    public static final BitSet FOLLOW_IF_in_ifStatement2481 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_ifStatement2483 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_THEN_in_ifStatement2485 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_ifStatement2487 = new BitSet(new long[]{0x000000000000E000L});
    public static final BitSet FOLLOW_ELSIF_in_ifStatement2492 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_ifStatement2494 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_THEN_in_ifStatement2496 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_ifStatement2498 = new BitSet(new long[]{0x000000000000E000L});
    public static final BitSet FOLLOW_ELSE_in_ifStatement2506 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_ifStatement2508 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_ifStatement2514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CASE_in_caseStatement2527 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_caseStatement2529 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_OF_in_caseStatement2531 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_case_in_caseStatement2533 = new BitSet(new long[]{0x000000000000A000L,0x0000000000004000L});
    public static final BitSet FOLLOW_78_in_caseStatement2537 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_case_in_caseStatement2539 = new BitSet(new long[]{0x000000000000A000L,0x0000000000004000L});
    public static final BitSet FOLLOW_ELSE_in_caseStatement2547 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_caseStatement2549 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_caseStatement2555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_caseLabelList_in_case2568 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_case2570 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_case2572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_whileStatement2585 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_whileStatement2587 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_DO_in_whileStatement2589 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_whileStatement2591 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_whileStatement2593 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_REPEAT_in_repeatStatement2606 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_repeatStatement2608 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_UNTIL_in_repeatStatement2610 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_repeatStatement2612 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FOR_in_forStatement2625 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_forStatement2627 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
    public static final BitSet FOLLOW_80_in_forStatement2629 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_forStatement2631 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_TO_in_forStatement2633 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_expression_in_forStatement2635 = new BitSet(new long[]{0x0000000000001080L});
    public static final BitSet FOLLOW_BY_in_forStatement2639 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_forStatement2641 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_DO_in_forStatement2647 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_forStatement2649 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_forStatement2651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LOOP_in_loopStatement2664 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_loopStatement2666 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_loopStatement2668 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WITH_in_withStatement2681 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_designator_in_withStatement2683 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_DO_in_withStatement2685 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_withStatement2687 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_withStatement2689 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_procedureHeading_in_procedureDeclaration2702 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_procedureDeclaration2704 = new BitSet(new long[]{0x0000028084008240L});
    public static final BitSet FOLLOW_block_in_procedureDeclaration2706 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_procedureDeclaration2708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PROCEDURE_in_procedureHeading2721 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_procedureHeading2723 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_formalParameters_in_procedureHeading2725 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_declaration_in_block2739 = new BitSet(new long[]{0x0000028084008240L});
    public static final BitSet FOLLOW_BEGIN_in_block2745 = new BitSet(new long[]{0x00004C0C01150100L,0x0000000000001040L});
    public static final BitSet FOLLOW_statementSequence_in_block2747 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_END_in_block2752 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONST_in_declaration2765 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_declaration2769 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_declaration2771 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_TYPE_in_declaration2779 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_typeDeclaration_in_declaration2783 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_declaration2785 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_VAR_in_declaration2793 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_variableDeclaration_in_declaration2797 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_declaration2799 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_procedureDeclaration_in_declaration2807 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_declaration2809 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_moduleDeclaration_in_declaration2814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_declaration2816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_formalParameters2829 = new BitSet(new long[]{0x0000420000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_fpSection_in_formalParameters2833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001010L});
    public static final BitSet FOLLOW_76_in_formalParameters2837 = new BitSet(new long[]{0x0000420000000000L});
    public static final BitSet FOLLOW_fpSection_in_formalParameters2839 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001010L});
    public static final BitSet FOLLOW_68_in_formalParameters2847 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_formalParameters2851 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_qualident_in_formalParameters2853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR_in_fpSection2869 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_identList_in_fpSection2872 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
    public static final BitSet FOLLOW_77_in_fpSection2874 = new BitSet(new long[]{0x0000420000000020L,0x0000000000000040L});
    public static final BitSet FOLLOW_formalType_in_fpSection2876 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ARRAY_in_formalType2891 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_OF_in_formalType2893 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_qualident_in_formalType2898 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_MODULE_in_moduleDeclaration2911 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_moduleDeclaration2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001400L});
    public static final BitSet FOLLOW_priority_in_moduleDeclaration2915 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_moduleDeclaration2918 = new BitSet(new long[]{0x00000280844A8240L});
    public static final BitSet FOLLOW_importList_in_moduleDeclaration2921 = new BitSet(new long[]{0x00000280844A8240L});
    public static final BitSet FOLLOW_exportList_in_moduleDeclaration2924 = new BitSet(new long[]{0x0000028084008240L});
    public static final BitSet FOLLOW_block_in_moduleDeclaration2928 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_moduleDeclaration2930 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_priority2943 = new BitSet(new long[]{0xC02A400008000000L,0x0000000000000068L});
    public static final BitSet FOLLOW_constExpression_in_priority2945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_priority2947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EXPORT_in_exportList2960 = new BitSet(new long[]{0x0000400100000000L});
    public static final BitSet FOLLOW_QUALIFIED_in_exportList2962 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_identList_in_exportList2965 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_exportList2967 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FROM_in_importList2982 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_importList2984 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_IMPORT_in_importList2989 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_identList_in_importList2991 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_importList2993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DEFINITION_in_definitionModule3006 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_MODULE_in_definitionModule3008 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_definitionModule3010 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_definitionModule3012 = new BitSet(new long[]{0x00000280804A8200L});
    public static final BitSet FOLLOW_importList_in_definitionModule3015 = new BitSet(new long[]{0x00000280804A8200L});
    public static final BitSet FOLLOW_exportList_in_definitionModule3018 = new BitSet(new long[]{0x0000028080008200L});
    public static final BitSet FOLLOW_definition_in_definitionModule3021 = new BitSet(new long[]{0x0000028080008200L});
    public static final BitSet FOLLOW_END_in_definitionModule3025 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_definitionModule3027 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_54_in_definitionModule3029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONST_in_definition3042 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_constantDeclaration_in_definition3046 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_definition3048 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_TYPE_in_definition3056 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_ident_in_definition3060 = new BitSet(new long[]{0x0080000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_55_in_definition3064 = new BitSet(new long[]{0x00004012C0000020L,0x0000000000000448L});
    public static final BitSet FOLLOW_type_in_definition3066 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_definition3071 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_VAR_in_definition3079 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_variableDeclaration_in_definition3083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_definition3085 = new BitSet(new long[]{0x0000400000000002L});
    public static final BitSet FOLLOW_procedureHeading_in_definition3093 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_definition3095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_MODULE_in_programModule3108 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_programModule3110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001400L});
    public static final BitSet FOLLOW_priority_in_programModule3112 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_programModule3115 = new BitSet(new long[]{0x0000028084488240L});
    public static final BitSet FOLLOW_importList_in_programModule3118 = new BitSet(new long[]{0x0000028084488240L});
    public static final BitSet FOLLOW_block_in_programModule3121 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_ident_in_programModule3123 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_54_in_programModule3125 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_definitionModule_in_compilationUnit3139 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IMPLEMENTATION_in_compilationUnit3143 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_programModule_in_compilationUnit3146 = new BitSet(new long[]{0x0000000000000002L});

}